Repository navigation
v1.2.1
Control Plane AI Plugin
What changed
Added
plugins/cpln/hooks/inject-rules.sh— a single bundled shell script that walksplugins/cpln/rules/*.md, filters byalwaysApply: truein frontmatter, and emits thehookSpecificOutput.additionalContextenvelope. Called from all three SessionStart hooks (Claude, Codex, Gemini); usesawkfor JSON escaping so the hook has zero optional runtime dependencies.
Changed
SessionStarthooks across Claude (plugins/cpln/hooks/cpln-hooks.json), Codex (same), and Gemini (hooks/hooks.json) now invokeinject-rules.shinstead of inlining ajq-based shell pipeline. Behavior is byte-for-byte identical to the previousjqoutput (verified against the same rule files) but no longer depends onjqbeing installed on the user's machine.- README's Codex install section now explains the
plugin_hooksfeature flag (UnderDevelopment, default_enabled: falseincodex-rs/features/src/lib.rs) and ships the~/.codex/config.tomlsnippet needed to enable plugin-bundled hook display and execution. Without the flag the Codex/pluginstab shows "No plugin hooks" and the SessionStart rule injector never fires.
Fixed
- Empty 1.2.0 install on Claude.
.claude-plugin/marketplace.jsonused{source: "github", repo: …, path: "plugins/cpln"}; Claude'sgithubsource schema doesn't accept apathfield, so the entire repo was cloned to the cache and Claude looked forplugin.jsonat the cache root (where onlymarketplace.jsonexists), loading the plugin with zero skills, agents, commands, or hooks. Source switched to the documented relative-path form"./plugins/cpln". - Empty Apps tab and parse warning on Codex.
plugins/cpln/.app.jsonshipped rich metadata (name,description,apiBase,auth,docs, …) but Codex'sPluginAppConfigstruct incodex-rs/core-plugins/src/loader.rsrequires a singleid: Stringfield — an opaqueasdk_app_<hex>identifier assigned by OpenAI's Apps SDK when Control Plane is registered as a ChatGPT App. Until that registration exists, the manifest'sapps: "./.app.json"line and.app.jsonitself are removed; Codex no longer emitsmissing field "id"warnings on every session.
Removed
plugins/cpln/.app.jsonand theappsfield inplugins/cpln/.codex-plugin/plugin.json(see Fixed above).
Update an existing install
If you already have the plugin installed, use the per-client commands below to pull this release. None of the three clients auto-update third-party plugins by default.
Claude Code
/plugin marketplace update controlplane
/reload-plugins
To opt into auto-updates for future releases, run /plugin, open the Marketplaces tab, select Control Plane, and choose Enable auto-update.
Codex
codex plugin marketplace upgrade controlplaneRestart Codex so the upgraded plugin manifest is picked up.
Gemini CLI
gemini extensions update cpln
# or, to update every installed extension at once:
gemini extensions update --allFirst-time install
Claude Code
/plugin marketplace add controlplane-com/ai-plugin
/plugin install cpln@controlplane
/reload-plugins
Codex
codex plugin marketplace add controlplane-com/ai-pluginThen start Codex, open /plugins, and install cpln from the Control Plane marketplace.
Gemini CLI
gemini extensions install https://github.com/controlplane-com/ai-plugin.git
# add --auto-update to opt into automatic updates for future releasesGeneric MCP client — point it at https://mcp.cpln.io/mcp with Authorization: Bearer ${CPLN_TOKEN}. See README for the per-client config snippet.
Full changelog: v1.2.0...v1.2.1