Verified on WordPress 7.0 RC3, and re-confirmed on the 7.0 stable release. PHP 8.3.30. Because I implemented this against RC3, I'm writing with the assumption that the AI Client API may still move — but the behaviors described here ( with_history() 's type, the role enum, the decryption-notice path) were identical between RC3 and stable. WordPress 7.0 shipped with the AI Client built into core. If a site admin wires up a provider in Connectors, a plugin can reach the model behind it without carrying any API keys of its own. My chatbot plugin used to carry OpenAI, Claude, Gemini, and OpenRouter itself — encrypting each provider's key, picking models, normalizing responses. I wrote that whole layer by hand. The 7.0 AI Client was an offer to hand that layer to the platform. I wanted to take it: keys and models, out of the plugin, into Connectors. There was one tension. Most users are still on pre-7.0 WordPress. I could add a new provider, but I couldn't break a single line on older installs.…