Install
Install chock, build a plugin for your agent from a selection code, and update or remove it.
Install chock
pipx install chock
You need Python 3.11 or newer. The engine is the only thing you install, and it builds the plugin from the pinned catalog. Cannot install chock on this machine? Use the per-policy marketplace instead: it needs Python 3.11+, git and a bash but no chock, and the Agents page links each agent's repository. Install a policy from one place only, never both.
Run the command
Pick your agent and your policies on the builder, copy the command and run it in your repo. --client names the agent. For an agent marked tested, --apply also runs that agent's own install steps. For an untested agent, the command only builds the plugin, and you run the steps yourself.
Each agent
Claude Code Tested
The command:
chock install --selection <code> --client claude-code --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for Claude Code:
claude plugin marketplace add ~/.chock/marketplace/claude-codeclaude plugin install chock-guardrails@chock-local
Both commands are safe to repeat. The plugin loads in place from the directory: restart the Claude Code session, or run /reload-plugins in it, to pick up a rebuild.
To remove it:
claude plugin uninstall chock-guardrails@chock-local
Delete the build folder ~/.chock/marketplace/claude-code/claude/chock-guardrails: chock bundle status lists a build for as long as its folder exists.
Only if no other chock build for this agent is still installed (every chock build made with the marketplace name chock-local shares it, so removing it takes their registration too): claude plugin marketplace remove chock-local. Otherwise leave it registered.
Cursor Tested
The command:
chock install --selection <code> --client cursor --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for Cursor:
Cursor loads ~/.cursor/plugins/local/chock-guardrails as a local plugin: run "Developer: Reload Window" (or restart Cursor), then check it under Customize. There is no command to run.
To remove it:
Delete the build folder ~/.cursor/plugins/local/chock-guardrails (Cursor loads it from there), then run "Developer: Reload Window" (or restart Cursor). chock bundle status lists a build for as long as its folder exists.
Not offered for Cursor. With Include Third-Party Plugins on, Cursor imports an enabled Claude Code plugin and calls its hooks. But in the live test, chock never ran and nothing was refused. Do not rely on that import to enforce chock's policies.
Codex Tested
The command:
chock install --selection <code> --client codex --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for Codex:
codex plugin marketplace add ~/.chock/marketplace/codex
Then install chock-guardrails from the chock-local marketplace in /plugins, and review and trust its hooks in /hooks: until you do, they do not run.
To remove it:
Uninstall chock-guardrails in /plugins, then delete the folder ~/.chock/marketplace/codex/codex/chock-guardrails.
Use the Claude Code plugin
This agent can also run the Claude Code plugin (agentseam loads_claude_plugins, seen in a live run):
Codex: guard and gate refused
Build it: chock install --selection <code> --client claude-code (then, in Codex:)
codex plugin marketplace add ~/.chock/marketplace/claude-codecodex plugin add chock-guardrails@chock-local
Warning: Install one build per agent. If you install both the agent's own chock plugin and the Claude Code plugin, each one checks every action.
Warning: When another agent runs the Claude Code plugin, chock logs its events as claude_code (~/.chock/log/claude_code/), not under that agent.
GitHub Copilot Tested
The command:
chock install --selection <code> --client copilot --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for GitHub Copilot:
copilot plugin marketplace add ~/.chock/marketplace/copilotcopilot plugin install chock-guardrails@chock-local
VS Code finds plugins the Copilot CLI installed. Without the CLI, add the plugin folder to your VS Code user settings yourself:
{
"chat.pluginLocations": {
"~/.chock/marketplace/copilot/claude/chock-guardrails": true
}
}
To remove it:
copilot plugin uninstall only disables the plugin (seen in a live run): it removes nothing from disk and leaves the marketplace registered.
copilot plugin uninstall chock-guardrails@chock-local
Delete the build folder ~/.chock/marketplace/copilot/claude/chock-guardrails: chock bundle status lists a build for as long as its folder exists.
Only if no other chock build for this agent is still installed (every chock build made with the marketplace name chock-local shares it, so removing it takes their registration too): copilot plugin marketplace remove chock-local. Otherwise leave it registered.
In VS Code, remove the "~/.chock/marketplace/copilot/claude/chock-guardrails" entry from chat.pluginLocations in your user settings (chock does not edit them).
Use the Claude Code plugin
This agent can also run the Claude Code plugin (agentseam loads_claude_plugins, seen in a live run):
Copilot CLI: guard and gate refused
Build it: chock install --selection <code> --client claude-code (then, in Copilot CLI:)
If copilot plugin marketplace add says Marketplace "chock-local" already registered, that is chock's Copilot build (this build's local marketplace is named chock-local, and every chock build made with that name shares it): keep one build and run copilot plugin marketplace remove chock-local first.
copilot plugin marketplace add ~/.chock/marketplace/claude-codecopilot plugin install chock-guardrails@chock-local
It loads live from ~/.chock/marketplace/claude-code/claude/chock-guardrails (nothing is copied); copilot plugin uninstall only disables it.
VS Code: Chat panel only. An Agents-window repo session ran no hooks
Build it: chock install --selection <code> --client claude-code (then, in VS Code:)
Add to your VS Code user settings (chock does not edit them), then use the Chat panel with the folder open:
{
"chat.plugins.enabled": true,
"chat.pluginLocations": {
"~/.chock/marketplace/claude-code/claude/chock-guardrails": true
}
}
Warning: Install one build per agent. If you install both the agent's own chock plugin and the Claude Code plugin, each one checks every action.
Warning: When another agent runs the Claude Code plugin, chock logs its events as claude_code (~/.chock/log/claude_code/), not under that agent.
Devin Tested
The command:
chock install --selection <code> --client devin --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for Devin:
On Windows, devin plugins install --local creates a symbolic link, so it needs Developer Mode (Settings > System > For developers) or an elevated shell; otherwise it fails with "os error 1314: A required privilege is not held by the client".
devin plugins install --local ~/.chock/marketplace/devin/chock-guardrails
The plugin is linked in place: a rebuild applies from the next Devin session.
To remove it:
devin plugins remove chock-guardrails --local
Delete the build folder ~/.chock/marketplace/devin/chock-guardrails: chock bundle status lists a build for as long as its folder exists.
Use the Claude Code plugin
This agent can also run the Claude Code plugin (agentseam loads_claude_plugins, seen in a live run):
Devin: turn end only. The shell guard and the write gate did not run
Devin's own chock plugin (chock install --client devin) is the better install here.
Build it: chock install --selection <code> --client claude-code (then, in Devin:)
On Windows, devin plugins install --local creates a symbolic link, so it needs Developer Mode (Settings > System > For developers) or an elevated shell.
devin plugins install --local ~/.chock/marketplace/claude-code/claude/chock-guardrails
Warning: Install one build per agent. If you install both the agent's own chock plugin and the Claude Code plugin, each one checks every action.
Warning: When another agent runs the Claude Code plugin, chock logs its events as claude_code (~/.chock/log/claude_code/), not under that agent.
Grok Tested
The command:
chock install --selection <code> --client grok --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for Grok:
grok plugin install ~/.chock/marketplace/grok/chock-guardrails --trust
Plugins are off in grok until enabled, and chock does not edit grok's config: run grok plugin list for the name grok gave this plugin (chock expects chock-guardrails, its folder name; the docs do not say how a plugin with no plugin.json is named), then grok plugin enable <name>, or add it to enabled under [plugins] in ~/.grok/config.toml, or press Space on it in the Plugins tab. Re-run the install command after a rebuild.
To remove it:
Run grok plugin list for the name grok gave this plugin, then grok plugin uninstall <name>.
Delete the build folder ~/.chock/marketplace/grok/chock-guardrails: chock bundle status lists a build for as long as its folder exists.
Use the Claude Code plugin
This agent can also run the Claude Code plugin (agentseam loads_claude_plugins, seen in a live run):
Grok: guard and gate refused
Build it: chock install --selection <code> --client claude-code (then, in Grok:)
grok plugin install ~/.chock/marketplace/claude-code/claude/chock-guardrails --trust
Plugins are off in grok until enabled: run grok plugin list for the id grok gave it, then grok plugin enable <id>.
Warning: Install one build per agent. If you install both the agent's own chock plugin and the Claude Code plugin, each one checks every action.
Warning: When another agent runs the Claude Code plugin, chock logs its events as claude_code (~/.chock/log/claude_code/), not under that agent.
goose Tested
The command:
chock install --selection <code> --client goose --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for goose:
goose discovers ~/.agents/plugins/chock-guardrails as a user plugin, in every project: start a new goose session. There is no command to run (goose plugin install takes a git URL only). To turn it off, add chock-guardrails to disabledPlugins in ~/.config/goose/settings.json.
To remove it:
Delete the build folder ~/.agents/plugins/chock-guardrails (goose discovers it there), then start a new goose session. chock bundle status lists a build for as long as its folder exists.
Optional tidy-up: delete the chock-guardrails entry in the plugins list of goose's config.yaml. goose works without this step.
Antigravity Tested
The command:
chock install --selection <code> --client antigravity --apply
Replace <code> with your selection code. Get it from the builder.
With --apply, chock runs these steps for Antigravity:
agy plugin install ~/.chock/marketplace/antigravity/chock-guardrails
Antigravity 2.0 and the IDE read plugin folders from ~/.gemini/config/plugins/ instead: copy ~/.chock/marketplace/antigravity/chock-guardrails there. Its hooks name ~/.chock/marketplace/antigravity/chock-guardrails by absolute path (Antigravity documents no plugin-root variable), so keep that folder where it is; re-run the install command after a rebuild.
To remove it:
Close Antigravity, delete the folder ~/.gemini/config/plugins/chock-guardrails, then reopen Antigravity. Checked on Windows.
Optional tidy-up: delete the build copy ~/.chock/marketplace/antigravity/chock-guardrails. Antigravity does not read it.
OpenHands Untested
Evidence wanted for OpenHands. Chock has not seen OpenHands run the plugin yet. The command still builds the plugin. If you use OpenHands, you can help: run it and share what happens in agentseam issue #181.
The command:
chock install --selection <code> --client openhands
Replace <code> with your selection code. Get it from the builder.
Then, in OpenHands:
OpenHands loads a local plugin when it starts: run openhands --plugin ~/.chock/marketplace/openhands/chock-guardrails, or add "~/.chock/marketplace/openhands/chock-guardrails" to sources under [plugins] in ~/.openhands/config.toml (chock does not edit it). Its hooks name ~/.chock/marketplace/openhands/chock-guardrails by absolute path (OpenHands documents no plugin-root variable), so keep that folder where it is; a rebuild applies from the next start.
To remove it:
Removal steps not verified for OpenHands yet. What you see when you remove it is wanted in agentseam issue #181.
Stop passing --plugin ~/.chock/marketplace/openhands/chock-guardrails, and remove "~/.chock/marketplace/openhands/chock-guardrails" from sources under [plugins] in ~/.openhands/config.toml if you added it (chock does not edit it).
Delete the build folder ~/.chock/marketplace/openhands/chock-guardrails: chock bundle status lists a build for as long as its folder exists.
Kimi Code Untested
Evidence wanted for Kimi Code. Chock has not seen Kimi Code run the plugin yet. The command still builds the plugin. If you use Kimi Code, you can help: run it and share what happens in agentseam issue #135.
The command:
chock install --selection <code> --client kimi-code
Replace <code> with your selection code. Get it from the builder.
Then, in Kimi Code:
Kimi Code installs plugins from its TUI only, and chock does not drive it: in Kimi Code run /plugins install ~/.chock/marketplace/kimi-code/chock-guardrails, then /reload (or /new). Kimi copies the plugin to $KIMI_CODE_HOME/plugins/managed/chock-guardrails/ and runs that copy, so after a rebuild install it again. The plugin applies to every project you open (Kimi has no project-level plugin scope); /plugins disable chock-guardrails turns it off.
To remove it:
Removal steps not verified for Kimi Code yet. What you see when you remove it is wanted in agentseam issue #135.
Factory Droid Untested
Evidence wanted for Factory Droid. Chock has not seen Factory Droid run the plugin yet. The command still builds the plugin. If you use Factory Droid, you can help: run it and share what happens in agentseam issue #184.
The command:
chock install --selection <code> --client factory-droid
Replace <code> with your selection code. Get it from the builder.
Then, in Factory Droid:
Run these from the root of the project the plugin is for: --scope project records it in that project's Droid settings. The marketplace is local to this machine; chock publishes nothing.
droid plugin marketplace add ~/.chock/marketplace/factory-droid/chock-localdroid plugin install chock-guardrails@chock-local --scope project
Droid names a local marketplace from its source; if droid plugin marketplace list shows a name other than chock-local (a --dest folder named otherwise), install chock-guardrails@<that name>. Droid copies the plugin into its cache: after a rebuild run droid plugin marketplace update and droid plugin update chock-guardrails@chock-local --scope project, then start a new session.
To remove it:
Removal steps not verified for Factory Droid yet. What you see when you remove it is wanted in agentseam issue #184.
Run these from the root of the project the plugin was installed for.
droid plugin uninstall chock-guardrails@chock-local --scope project
Delete the build folder ~/.chock/marketplace/factory-droid/chock-local/droid/chock-guardrails: chock bundle status lists a build for as long as its folder exists.
Only if no other chock build for this agent is still installed (every chock build made with the marketplace name chock-local shares it, so removing it takes their registration too): droid plugin marketplace remove chock-local. Otherwise leave it registered.
Every agent
Every agent agentseam records, and how chock reaches it: a plugin, repo hooks, or neither, with the reason. Tested means a person has seen chock refuse actions with that install method. A test of the plugin tells you nothing about repo hooks.
| Agent | Plugin (chock install) | Repo hooks (chock sync) | Agentseam's record |
|---|---|---|---|
Aider aiderNo install method yet. | No plugin format. | Not wired: agentseam records no hook in this agent that can stop an action, so chock has nothing to wire. | Pre-tool: none, none, fail mode n/a (vendor-docs, 2026-08-26) |
Amp ampNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #182 |
Antigravity antigravityInstall methods: plugin and repo hooks. | --client antigravity Tested
| chock sync --repo . --agents antigravity Untested
| Pre-tool: block+rewrite, best-effort, fail mode open (vendor-docs, 2026-08-26) |
Claude Code claude_codeInstall methods: plugin and repo hooks. | --client claude-code Tested
| chock sync --repo . --agents claude Untested
| Pre-tool: block+rewrite, best-effort, fail mode open (live-run, 2026-09-07) |
Cline clineNo install method yet. | No plugin format. | Not wired by chock sync: this agent runs one executable per hook event from a hooks folder, and chock sync writes JSON or TOML hook files, so it needs a dispatcher chock does not ship yet. | Pre-tool: block, best-effort, fail mode open (vendor-docs, 2026-10-11)agentseam issue #178 |
OpenAI Codex CLI codex_cliInstall methods: plugin and repo hooks. | --client codex Tested
| chock sync --repo . --agents codex Untested
| Pre-tool: block+rewrite, best-effort, fail mode open (live-run-partial, 2026-08-28) |
GitHub Copilot (Agent Plugins 1.0 marketplace bundle) copilotInstall method: plugin. | --client copilot Tested
| Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-08-29)This is the Copilot plugin. Copilot's repo hooks are the GitHub Copilot (VS Code agent mode / CLI) row. (Agentseam matrix notes for copilot) |
Cursor cursorInstall methods: plugin and repo hooks. | --client cursor Tested
| chock sync --repo . --agents cursor Untested
| Pre-tool: block+rewrite, enforceable, fail mode configurable (live-run-partial, 2026-09-23) |
DeepSeek Harness (dsh) deepseek_harnessNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #189 |
Devin devinInstall methods: plugin and repo hooks. | --client devin Tested
| chock sync --repo . --agents devin Untested
| Pre-tool: block+rewrite, best-effort, fail mode open (vendor-docs, 2026-08-26) |
Factory Droid factory_droidInstall methods: plugin and repo hooks. | --client factory-droid Untested
| chock sync --repo . --agents factory-droid Untested
| Pre-tool: block, best-effort, fail mode open (vendor-docs, 2026-10-11)agentseam issue #184 |
Gemini CLI gemini_cliInstall method: repo hooks. | No plugin format. | chock sync --repo . --agents gemini Untested
| Pre-tool: block+rewrite, best-effort, fail mode open (vendor-source, 2026-08-28)Gemini CLI is not an install target of chock: Antigravity CLI replaces Gemini CLI for unpaid users, so chock builds no Gemini CLI plugin. Use the Antigravity plugin. (Chock's install command (src/chock/install/cli.py, --client gemini-cli) and agentseam's matrix notes for gemini_cli)
|
goose gooseInstall methods: plugin and repo hooks. | --client goose Tested
| chock sync --repo . --agents goose Untested
| Pre-tool: block, best-effort, fail mode configurable (vendor-docs, 2026-10-11) |
Grok CLI grokInstall methods: plugin and repo hooks. | --client grok Tested
| chock sync --repo . --agents grok Untested
| Pre-tool: block, best-effort, fail mode open (vendor-docs, 2026-08-26) |
Junie CLI junieNo install method yet. | No plugin format. | Not wired by chock sync: this agent reads its hooks from a config in your home folder, and chock sync writes only inside the repository. | Pre-tool: block+rewrite, best-effort, fail mode open (vendor-docs, 2026-08-26) |
Kilo Code kilo_codeNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #175 |
Kimi Code CLI kimi_codeInstall method: plugin. | --client kimi-code Untested
| Not wired by chock sync: this agent reads its hooks from a config in your home folder, and chock sync writes only inside the repository. | Pre-tool: block, best-effort, fail mode open (vendor-docs, 2026-08-26)agentseam issue #135 |
Kiro kiroNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #183 |
Mistral Vibe mistral_vibeInstall method: repo hooks. | No plugin format. | chock sync --repo . --agents mistral-vibe Untested
| Pre-tool: block+rewrite, best-effort, fail mode configurable (vendor-docs, 2026-10-11)agentseam issue #187 |
OpenCode opencodeNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #174 |
OpenHands openhandsInstall methods: plugin and repo hooks. | --client openhands Untested
| chock sync --repo . --agents openhands Untested
| Pre-tool: block, best-effort, fail mode open (vendor-docs, 2026-10-11)agentseam issue #181
Chock's Claude Code plugin does not protect OpenHands, even though OpenHands reads .claude-plugin/: its matchers never match OpenHands' terminal or file_editor tools. Use the OpenHands plugin. (docs/enforcement-surfaces.md in chock)
|
Replit Agent replitNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-08-26) |
Roo Code roo_codeNo install method yet. | No plugin format. | Not wired: agentseam records this agent but has no adapter for its hooks, so chock has nothing to wire. | Pre-tool: unadapted, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #179 |
Tabnine CLI tabnineInstall method: repo hooks. | No plugin format. | chock sync --repo . --agents tabnine Untested
| Pre-tool: block+rewrite, best-effort, fail mode open (vendor-docs, 2026-08-26) |
GitHub Copilot (VS Code agent mode / CLI) vscode_copilotInstall method: repo hooks. | No plugin format. | chock sync --repo . --agents copilot Tested
| Pre-tool: block+rewrite, best-effort, fail mode open (live-run-partial, 2026-09-28) |
Windsurf (Cascade) windsurfInstall method: repo hooks. | No plugin format. | chock sync --repo . --agents windsurf Untested
| Pre-tool: block, best-effort, fail mode open (third-party-install, 2026-08-26) |
Zed zedNo install method yet. | No plugin format. | Not wired: agentseam records no hook in this agent that can stop an action, so chock has nothing to wire. | Pre-tool: none, none, fail mode n/a (vendor-docs, 2026-10-11)agentseam issue #186 |
Update
Change your picks in the builder and re-run the command. Each agent's last step above says how it picks up a rebuild.
Remove
Each agent's section above ends with its remove steps.
The selection file
A selection is a small JSON or YAML file naming the agent, the pinned catalog commit and the policies you picked. The builder writes one for you. The install command reads the same file. These are the fields it checks:
| Field | What install checks |
|---|---|
schema | 2, the selection format version. |
client | The agent the plugin is built for: claude-code, cursor, codex, copilot, devin, grok, goose, antigravity, openhands, kimi-code, factory-droid. The --client option on the command line overrides it. |
bundle.version | The plugin's version, 1.0.0 from this site. |
catalog.source | The chock-catalog repository. |
catalog.ref | The pinned catalog commit. The plugin builds only from it. |
catalog.release | Optional. A named catalog release over the commit. |
preset | Optional. The preset the picks started from. |
policies | One entry per picked policy: from (catalog), id, version and sha256. |