Title: AI Provider for Command Code
Author: Bestony
Published: <strong>September 22, 2026</strong>
Last modified: September 22, 2026

---

Search plugins

![](https://ps.w.org/ai-provider-for-command-code/assets/banner-772x250.png?rev=
3706444)

![](https://ps.w.org/ai-provider-for-command-code/assets/icon.svg?rev=3706444)

# AI Provider for Command Code

 By [Bestony](https://profiles.wordpress.org/bestony/)

[Download](https://downloads.wordpress.org/plugin/ai-provider-for-command-code.1.0.6.zip)

 * [Details](https://wordpress.org/plugins/ai-provider-for-command-code/#description)
 * [Reviews](https://wordpress.org/plugins/ai-provider-for-command-code/#reviews)
 *  [Installation](https://wordpress.org/plugins/ai-provider-for-command-code/#installation)
 * [Development](https://wordpress.org/plugins/ai-provider-for-command-code/#developers)

 [Support](https://wordpress.org/support/plugin/ai-provider-for-command-code/)

## Description

Adds [Command Code](https://commandcode.ai/docs/provider) as a provider for the 
WordPress AI Client.
 Command Code routes Claude, GPT, Gemini and the top open models
through a single API with OpenAI-compatible and Anthropic-compatible endpoints, 
so one API key covers every model the AI plugin can use.

 * The model list is fetched live from `GET /provider/v1/models`, including newly
   added models.
 * Claude models are called on the Anthropic Messages endpoint, everything else 
   on the
    OpenAI-compatible chat completions endpoint — matching the `supported_endpoints`
   field the API reports for each model.
 * Tool calling, structured output (JSON schema), chat history, stop sequences and
   multi-candidate
    generation are supported where the model supports them.
 * Zero data retention can be requested per request (see below).

### Configuration

The API key is read, in order of precedence, from:

 1. The `COMMANDCODE_API_KEY` environment variable
 2. The `COMMANDCODE_API_KEY` PHP constant
 3. The `connectors_ai_commandcode_api_key` option (Settings  Connectors)

All optional settings are environment variables or PHP constants:

 * `COMMANDCODE_DEFAULT_MODEL` — model ID to prefer in pickers and feature filters.
   
   Default: `claude-sonnet-5`.
 * `COMMANDCODE_ZDR` — set to `1` to send `x-cmd-zdr: 1` and route only through 
   zero-data-retention
    upstreams. Requests fail with a 422 when the chosen model
   has no ZDR-capable upstream instead of silently falling back. Default: off.
 * `COMMANDCODE_BASE_URL` — Provider API base URL.
    Default: `https://api.commandcode.
   ai/provider/v1`.
 * `COMMANDCODE_MODEL_INPUT_MODALITIES` — comma-separated list of modalities your
   models accept.
    Include `image` (e.g. `text,image`) for deployments that require
   vision features. Default: text only.
 * `COMMANDCODE_REQUEST_TIMEOUT` — request timeout in seconds. Default: `120`.
 * `COMMANDCODE_CONNECT_TIMEOUT` — connection timeout in seconds. Default: `10`.
 * `COMMANDCODE_STRUCTURED_OUTPUT` — how JSON response requests are shaped. One 
   of:
    - `json_schema` (default) — sends the JSON schema. Use this by default.
    - `json_object` — asks only for valid JSON, without the schema. Widely supported
      fallback.
    - `none` — sends no `response_format` at all. Use this when a model rejects 
      every form of it.
       If a feature that needs JSON (e.g. Editorial Notes) fails
      with 400 … “param”:”response_format”, try `json_object`.

To influence which models the AI plugin picks for its features, use the standard
filters in your own
 plugin or theme — this plugin already puts its preferred model
first:

    ```
    add_filter( 'wpai_preferred_text_models', function ( $models ) {
        array_unshift( $models, array( 'commandcode', 'gpt-5.6-luna' ) );
        return $models;
    } );<h3>External services</h3>
    ```

This plugin connects to the Command Code Provider API, an external service operated
by Command Code.
 It is required so the WordPress AI Client can route requests to
models from your site. Command Code is a paid service: a plan with API access is
needed (the free Go plan has none), and requests are billed to your Command Code
account.

The plugin contacts the following endpoints under `https://api.commandcode.ai/provider/
v1`:

 * `GET /models` — called when the AI Client refreshes its list of available models,
   and when it checks
    whether your credentials work. No user content is sent; only
   your API key, so Command Code can return the models available to your account.
 * `POST /chat/completions` — called whenever any plugin or theme on your site uses
   the WordPress AI
    Client to generate text with a non-Claude model. The request
   carries your API key and the prompt: messages, system instruction, tool definitions,
   and any other parameters the calling code supplied (conversation history, a JSON
   schema for structured output, or files attached to the prompt).
 * `POST /messages` — the same as above, for Claude models, which Command Code serves
   only on this
    endpoint.

No request is made until something on your site asks the AI Client for a generation,
or the AI Client
 refreshes its model list. Your API key is stored on your own site
and is only ever sent to api.commandcode.ai.

Optional: setting `COMMANDCODE_ZDR=1` adds an `x-cmd-zdr: 1` header, asking Command
Code to route the
 request only through zero-data-retention upstreams. Requests 
fail with a 422 when a chosen model has no such upstream, rather than falling back
silently.

This service is provided by Command Code:

 * Provider API documentation: [https://commandcode.ai/docs/provider](https://commandcode.ai/docs/provider)
 * Terms of Service: [https://commandcode.ai/terms](https://commandcode.ai/terms)
 * Privacy Policy: [https://commandcode.ai/privacy](https://commandcode.ai/privacy)
 * Zero data retention: [https://commandcode.ai/docs/resources/zdr](https://commandcode.ai/docs/resources/zdr)

## Screenshots

[⌊The Command Code connector card on Settings → Connectors, with the API key field
and the
models the provider reports.⌉⌊The Command Code connector card on Settings
→ Connectors, with the API key field and the
models the provider reports.⌉[

The Command Code connector card on Settings  Connectors, with the API key field 
and the models the provider reports.

## Installation

 1. Upload the plugin files to `/wp-content/plugins/ai-provider-for-command-code/`.
 2. Activate the plugin through the ‘Plugins’ menu in WordPress.
 3. Go to Settings  Connectors, open the Command Code card and paste your Provider 
    API key — or define it outside the database (see Configuration).

A Command Code plan with API access is required. The Go plan has no API access; 
Provider, GOAT, Pro, Max and Team plans do.

## FAQ

### Does this plugin work without the PHP AI Client?

No. It requires the PHP AI Client SDK, which is provided by WordPress 7.0 or by 
the AI plugin. The
 provider stays silent when the SDK is missing.

### Do I need to configure anything in the database?

Only the API key, and only if you cannot set an environment variable or constant.
The provider adds
 no settings page of its own: everything it needs is on Settings
Connectors.

### Which models can be used with vision features?

Command Code’s models endpoint does not report which models accept images, so the
plugin declares
 image input from a maintained list in the source. If your model
supports images but is not on that list, set `COMMANDCODE_MODEL_INPUT_MODALITIES
=text,image` to declare it.

### Why is `temperature` missing on GPT-5 models?

GPT-5 and later reasoning families reject non-default sampling parameters, so the
plugin does not
 advertise them for those models. That is upstream behaviour, not
a plugin limitation.

### Editorial Notes fails with `400 … response_format`

That feature asks for a JSON schema response. Set `COMMANDCODE_STRUCTURED_OUTPUT
=json_object` to ask
 for plain JSON instead, or `none` to send no `response_format`
at all — the prompt still asks for JSON.

### Where is my API key stored?

In the WordPress options table on your own site, under the AI Client’s connector
option
 (`connectors_ai_commandcode_api_key`), or in an environment variable or 
PHP constant if you set one. It is never transmitted anywhere except to the Command
Code API when fulfilling a request.

### What data leaves my site?

Only what you send to the AI: your prompts, and whatever the calling plugin or theme
adds to them
 (system instructions, conversation history, tool definitions, a JSON
schema, or attached files). See External services below for the exact endpoints.

### Is there a settings page?

No. Everything this plugin needs lives on Settings  Connectors, and the optional
behaviour is
 controlled by environment variables or constants.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“AI Provider for Command Code” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ Bestony ](https://profiles.wordpress.org/bestony/)

[Translate “AI Provider for Command Code” into your language.](https://translate.wordpress.org/projects/wp-plugins/ai-provider-for-command-code)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ai-provider-for-command-code/),
check out the [SVN repository](https://plugins.svn.wordpress.org/ai-provider-for-command-code/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/ai-provider-for-command-code/)
by [RSS](https://plugins.trac.wordpress.org/log/ai-provider-for-command-code/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.6

 * Stop reading the `connectors_ai_commandcode_api_key` option directly. Whether
   a Command Code
    credential is configured is now asked of the AI Client, so the
   plugin never handles the key the user saved in Settings  Connectors. Behaviour
   is unchanged: the `COMMANDCODE_API_KEY` constant and environment variable still
   work.

#### 1.0.3

 * Document the external service in the readme: the endpoints contacted, what data
   is sent and when,
    and links to Command Code’s Terms of Service and Privacy Policy.
 * Ship the GPL-2.0 LICENSE file with the plugin.

#### 1.0.2

 * Escape all exception messages and mark them for translation, so Plugin Check 
   passes cleanly.
 * Add a direct-access guard to the autoloader.
 * Reduce the readme to five tags.

#### 1.0.1

 * Fix `400 invalid_request_error: response_format` on features that request a JSON
   schema, such as
    Editorial Notes. The JSON schema is now sent in the wrapper 
   the API expects.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.0.6**
 *  Last updated **10 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.9 or higher **
 *  Tested up to **7.1.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[Claude](https://wordpress.org/plugins/tags/claude/)
   [connector](https://wordpress.org/plugins/tags/connector/)[gpt](https://wordpress.org/plugins/tags/gpt/)
 *  [Advanced View](https://wordpress.org/plugins/ai-provider-for-command-code/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ai-provider-for-command-code/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ai-provider-for-command-code/reviews/)

## Contributors

 *   [ Bestony ](https://profiles.wordpress.org/bestony/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ai-provider-for-command-code/)