# Supported Agents [Back to README](../../README.md) Claude Code and Codex CLI are set up on first launch. Install any other integration from **Settings → AI Coding Tools**; Clawd then keeps it synced while it stays enabled. - **Claude Code** — full integration via command hooks + HTTP permission hooks - **Codex CLI** — official hooks with JSONL fallback (`~/.codex/sessions/`), auto-synced by default with real permission bubbles - **Copilot CLI** — optional command hooks via `~/.copilot/hooks/hooks.json` (install from Settings → AI Coding Tools; see the Copilot guide for manual JSON fallback) - **Gemini CLI** — optional command hooks via `~/.gemini/settings.json` (install from Settings → AI Coding Tools or run `npm run install:gemini-hooks`) - **Antigravity CLI (agy)** — optional command hooks via `~/.gemini/config/hooks.json` (install from Settings → AI Coding Tools or run `npm run install:antigravity-hooks`); **state-only**: Clawd never pops a permission bubble for agy. Every Allow / Deny / Always-allow choice happens in agy's own terminal menu - **Cursor Agent** — optional [Cursor IDE hooks](https://cursor.com/docs/agent/hooks) in `~/.cursor/hooks.json` (install from Settings → AI Coding Tools or run `npm run install:cursor-hooks`) - **CodeBuddy** — optional Claude Code-compatible command hooks + HTTP permission hooks via `~/.codebuddy/settings.json` (install from Settings → AI Coding Tools or run `node hooks/codebuddy-install.js`) - **Custom HTTP agents** — register another local executable in Settings and POST lifecycle events to Clawd's dynamic `/state` endpoint. Registration does not install hooks or make an arbitrary application report automatically; v1 is state-only and leaves permission decisions in the application's own UI. See the [custom HTTP agent guide](custom-agent-http.md). - **WorkBuddy** — optional Claude Code-compatible command hooks via `~/.workbuddy-ai/settings.json` (current) or `~/.workbuddy/settings.json` (legacy; install from Settings → AI Coding Tools or run `node hooks/workbuddy-install.js`). State + Notification only: the desktop app resolves permissions in its own native sandbox and GUI, so Clawd does not register a permission hook for it. - **Grok Build** — optional Claude Code-compatible command hooks via `~/.grok/hooks/clawd-on-desk.json` (install from Settings → AI Coding Tools or run `node hooks/grok-install.js`). State + Notification only: Grok has no blocking `PermissionRequest` hook, so Allow/Deny stays in the Grok TUI. - **Kiro CLI** — optional command hooks injected into custom agent configs under `~/.kiro/agents/`, plus an auto-created `clawd` agent that is re-synced from Kiro's built-in `kiro_default` after you install the integration, so you can opt into hooks with minimal behavior drift via `kiro-cli --agent clawd` or `/agent swap clawd`. State hooks are verified on macOS and Windows. - **KiroCrew** — optional state-only chat lifecycle hooks registered in `~/.kiro/crew/hooks.json` (install from Settings → AI Coding Tools or run `npm run install:kirocrew-hooks`; uninstall with `npm run uninstall:kirocrew-hooks`). KiroCrew runs agents through a background MCP gateway (dashboard sessions, cron jobs, subagents), which does not fire the per-agent `~/.kiro/agents/*.json` hooks that `kiro-cli` uses — this adapter bridges four gateway events (AgentSpawn, UserPromptSubmit, PostToolUse, Stop) onto Clawd's state machine so the pet reacts to KiroCrew activity. PreToolUse is intentionally not used: a failing hook on that event denies the tool on KiroCrew's approval path. A running gateway owns `hooks.json` and reconciles external writes, so install/uninstall while the gateway is stopped (or add the hooks from KiroCrew's own Hooks page); start the gateway afterward so the hooks load. State-only in Phase 1: no permission bubbles or subagent tracking. - **Kimi Code CLI (Kimi-CLI)** — optional command hooks via `~/.kimi/config.toml` (`[[hooks]]` entries) (install from Settings → AI Coding Tools or run `npm run install:kimi-hooks`) - **Qwen Code** — optional command hooks via `~/.qwen/settings.json` (install from Settings → AI Coding Tools or run `npm run install:qwen-hooks`); state tracking and Qwen `PermissionRequest` desktop approval bubbles are supported - **ZCode** — optional state + blocking `PermissionRequest` hooks via `~/.zcode/cli/config.json` → `hooks.events.*` (install from Settings → AI Coding Tools or run `npm run install:zcode-hooks`); Clawd shows manual Allow/Deny bubbles while global and per-session permission automation stays deferred. Clawd preserves explicit global or per-hook `enabled:false` settings and will not register over a foreign `PermissionRequest` hook - **CodeWhale** — optional state-only lifecycle hooks via `~/.codewhale/config.toml` (`[[hooks.hooks]]` entries) (install from Settings → AI Coding Tools or run `npm run install:codewhale-hooks`); Phase 1 drives idle, thinking, working, sleeping, error, attention, and sweeping animations only, without permission bubbles or subagent tracking - **Reasonix CLI** — optional state-only command hooks via `/settings.json` (`~/.reasonix/settings.json` on macOS/Linux, `%APPDATA%\reasonix\settings.json` on Windows; install from Settings → AI Coding Tools or run `npm run install:reasonix-hooks`); Phase 1 drives lifecycle, tool, notification, compaction, and subagent-stop animations while leaving permission decisions in Reasonix's own terminal flow - **opencode** — optional [plugin integration](https://opencode.ai/docs/plugins) via the effective file under `~/.config/opencode/` (`config.json` → `opencode.json` → `opencode.jsonc`, later wins) (install from Settings → AI Coding Tools or run `node hooks/opencode-install.js`); zero-latency event streaming and permission bubbles with Allow/Always/Deny. Child sessions spawned by the `task` tool are headless and do not participate in the visible multi-session animation fanout - **MiMo Code** — optional [plugin integration](https://opencode.ai/docs/plugins) via the effective file under `~/.config/mimocode/` (`config.json` → `mimocode.json` → default `mimocode.jsonc`, later wins; install from Settings → AI Coding Tools or run `npm run install:mimocode-plugin`); shares the same `@mimo-ai/plugin` SDK and permission behavior as opencode. Its `task` child sessions are likewise headless - **Pi** — optional global extension via `~/.pi/agent/extensions/clawd-on-desk` (install from Settings → AI Coding Tools or run `npm run install:pi-extension`); state-only interactive lifecycle and tool activity updates while preserving Pi's default YOLO behavior - **OMP (oh-my-pi)** — optional global extension via `~/.omp/agent/extensions/clawd-on-desk` (install from Settings → AI Coding Tools or run `npm run install:omp-extension`); state-only interactive lifecycle and tool activity updates. `session_stop` records a completion candidate, and the following terminal `agent_end` commits it only after OMP has confirmed that no extension requested a continuation, so the finish chime waits for the turn to settle. If the community bridge `clawd-on-desk-omp.ts` is already present, Clawd leaves it in place and skips its own install - **OpenClaw** — optional state-only plugin integration via `~/.openclaw/openclaw.json` (install from Settings → AI Coding Tools or run `npm run install:openclaw-plugin`; OpenClaw also needs an initialized config); local `openclaw tui --local` sessions drive Clawd animations, without permission bubbles or terminal focus in Phase 1 - **Hermes Agent** — optional [plugin integration](https://hermes-agent.org/) via Hermes' managed plugin directory (install from Settings → AI Coding Tools or run `npm run install:hermes-plugin`); state, sessions, SessionEnd, terminal focus, and supported permission bubbles are available; **Settings → Remote SSH** can deploy the same plugin to a Hermes install on a remote host - **Qoder** — optional state-only command hooks via `~/.qoder/settings.json` or `~/.qoder-cn/settings.json` (install from Settings → AI Coding Tools or run `npm run install:qoder-hooks`); Clawd does not create an uninstalled edition's directory. The Qoder CN worker runtime 1.1.69 is verified on Windows; CN on macOS/Linux is unverified. Phase 1 drives Clawd animations only — Qoder permission prompts are observed as notifications, and every Allow / Deny choice stays in Qoder's own flow - **QoderWork** — optional state-only command hooks via `~/.qoderwork/settings.json` (install from Settings → AI Coding Tools or run `npm run install:qoderwork-hooks`); Phase 1 drives Clawd animations and the Session HUD — QoderWork permission events are observed silently as part of the working flow, and every Allow / Deny choice stays in QoderWork's own flow - **QwenWork (千问办公)** — optional hook-only, state-only command hooks via `~/.QwenWorkCN/settings.json` (install from Settings → AI Coding Tools or run `npm run install:qwenwork-hooks`, uninstall with `npm run uninstall:qwenwork-hooks`); macOS and Windows desktop only — [qwenwork.cn/download](https://qwenwork.cn/download) has no Linux client, so there is no WSL pairing. Phase 1 drives Clawd animations and the Session HUD; `PermissionRequest` / `PermissionDenied` are observed only and mapped to `working`, the hook's stdout is always `{}`, and Clawd never produces an Allow / Deny — QwenWork's native permission flow stays the only decision maker. No startup recovery: the desktop process is long-lived and does not mean a turn is running - **DeepSeek Harness** — experimental integration for both the DSH web profile and the DeepSeek Harness desktop app (macOS / Windows) through a Clawd-managed in-process DSH plugin. Public session events drive Clawd state with per-session ordering, and public blocking `approval/request` calls can show an Allow Once / Deny bubble; no-decision always returns to DSH's own approval flow (the web answerer, or the desktop app's own approval dialog). `ask_user_question` stays entirely native to DSH, and Clawd never reads DSH projection storage. See the [DeepSeek Harness guide](dsh-setup.md) - **TraeCode (Trae CN)** — experimental, state-only hook integration via `~/.trae-cn/hooks.json` (install from Settings → AI Coding Tools or run `npm run install:traecode-hooks`, uninstall with `npm run uninstall:traecode-hooks`). Trae stores the session title server-side, so Clawd derives it from the first prompt line and keeps the first one per session. Hooks must be enabled manually in Trae (**Settings → Hooks → Enable**, run mode: **Sandbox**) — see the [official Trae hooks doc](https://docs.trae.cn/ide/automate-actions-with-hooks). First release is scoped to Trae CN; the international Trae build is not covered. State-only: no permission decisions (stdout is always `{}`) and no `SessionEnd` — closed conversations retire via the desktop idle-timeout cleanup - **MiniMax Code** — experimental, state-only integration through a Clawd-owned local plugin at `~/.minimax/plugins/clawd-state/` (install from Settings → AI Coding Tools or run `npm run install:minimax-hooks`, uninstall with `npm run uninstall:minimax-hooks`; honors `MINIMAX_DATA_DIR` / `MAVIS_DATA_DIR`). Covers the mcode CLI and the MiniMax Code desktop app. Clawd registers 10 state events (including `SessionEnd`); `PermissionRequest` is deliberately not registered because MiniMax's plugin-hook runner caps every handler at 1–10 seconds, so blocking human approval is impossible — every approval stays in MiniMax's native flow and the hook stdout is always `{}`. On macOS and Windows the desktop app auto-discovers the plugin (real-machine verified with the desktop app and the CLI); if hooks do not fire, enable it with `mcode plugin enable clawd-state@local` or via the app's plugin panel. Session titles derive from the first prompt line and keep the first one per session - **Multi-agent coexistence** — run all agents simultaneously; Clawd tracks each session independently