Agent setup per coding tool
One installer, six tools. What it writes for each one, how to check the install, and the limit that stays.
Claude Code
The installer registers hook entries in the global ~/.claude hooks and in the project .claude/settings.json, both owned by the installer. Action gate checks such as the push gate read the exact command before it runs and refuse default-branch pushes.
Verify: run a harmless blocked action in a scratch repo, for example a push with the default branch checked out, and confirm the refusal names the action gate. Limit: removing the installer-owned hooks disables the checks; hosting-side branch protection still applies.
OpenCode
The installer copies the gates plugin into the OpenCode plugin directory, so every Bash gate the Claude Code side runs also judges OpenCode tool calls, including push-to-main attempts. Deleting the plugin file turns the OpenCode block off.
Verify: ask the agent to push to the default branch and confirm the plugin denies it before the command runs. Limit: commands run outside OpenCode skip the plugin; the global git hooks still gate real git operations.
Codex
The installer writes a marked block into the global ~/.codex/config.toml that routes shell and agent commands through the universal gate, which answers with the same deny and block envelopes the other tools use.
Verify: open the config file, confirm the marked block is present, and trigger a blocked command to see the denial. Limit: the action gate only sees commands the Codex harness sends through its hooks; a shell outside Codex is not checked.
Gemini CLI
The installer adds entries to ~/.gemini/settings.json that call the universal gate before a tool runs and after the agent loop finishes.
Verify: list hooks with the /hooks panel and confirm the Asondy entries are present and enabled. Limit: the harness must load settings hooks; project-level hooks in untrusted checkouts stay subject to the CLI trust prompt.
Qwen Code
The installer writes the Qwen profile of the universal gate into ~/.qwen/settings.json, covering shell commands and agent stop events the same way the Gemini profile does.
Verify: read back the settings file and confirm the Asondy entries, then trigger a blocked command. Limit: as with Gemini, the harness must load settings hooks.
Kimi Code
The installer sets up the bridge under ~/.kimi-code: two telemetry hooks and four enforcement hooks. This targets Kimi Code CLI, the maintained terminal agent; the legacy Python Kimi CLI is archived and is not supported.
Verify: confirm the bridge file exists in the installed scripts and the hooks are registered, then trigger a blocked command. Limit: removing the bridge config disables the checks; migrate legacy Kimi CLI installs to Kimi Code first.
References
- OWASP Top 10 for LLM Applications, OWASP GenAI Security Project
- AI Risk Management Framework, NIST
- Hooks reference, Claude Code docs
- Plugins, OpenCode docs
- Hooks, Gemini CLI docs
- Codex, OpenAI on GitHub
- Kimi Code CLI, Moonshot AI on GitHub