Skip to content

AGENT INTEGRATIONS · FACT-CHECKED

Know exactly what is wired.

DuckTerm separates tested workflow coverage from the canonical contract. The matrix below is built from hookd’s embedded contract and runtime status rules, not a hand-maintained marketing list.

14 Tested workflows
13 Canonical contract rows
10 Wired phone decision paths

Contract v1 defines 13 Agents and 10 decision schemas. Installed native hooks, plug-ins, and extensions carry supported phone decisions through the same contract.

Contract v1

Canonical capability matrix

Identity, approval, and reply correlation come directly from agent_contracts.v1. Lifecycle classification comes from turn_rules.v1. Effective installer surfaces account for the OpenCode plugin and Pi extension overrides.

DuckTerm canonical Agent contract capabilities
Agent Lifecycle status Phone decision hookd adapter Reply matching
Claude Codeclaude Contract-backed Lifecycle status Agent-specific rules 10 mapped event types Phone decision Approve / reject wired Structured response · Event: PermissionRequest hookd adapter Native hook config ~/.claude/settings.json Reply matching Per event 4 identifier fields
Codexcodex Contract-backed Lifecycle status Agent-specific rules 8 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PermissionRequest hookd adapter Native hook config ~/.codex/hooks.json Reply matching Per event 4 identifier fields
Grok Buildgrok Contract-backed Lifecycle status Agent-specific rules 14 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PreToolUse hookd adapter Native hook config ~/.grok/hooks/duckterm-hookd.json Reply matching Per event 6 identifier fields
Antigravityagy Contract-backed Lifecycle status Agent-specific rules 8 mapped event types Phone decision Approve / reject wired Structured response · Event: PreToolUse hookd adapter Native hook config ~/.gemini/config/hooks.json Reply matching Per event Composite key: agy
OpenCodeopencode Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Approve / reject wired Structured response · Event: PermissionRequest hookd adapter JavaScript plugin ~/.config/opencode/plugins/duckterm-hookd.js Reply matching Per event 3 identifier fields
Pipi Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Approve / reject wired Structured response · Event: PermissionRequest hookd adapter TypeScript extension ~/.pi/agent/extensions/duckterm-hookd.ts Reply matching Per event 3 identifier fields
Devindevin Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PermissionRequest hookd adapter Native hook config ~/.config/devin/config.json Reply matching Per event 4 identifier fields
Droiddroid Contract-backed Lifecycle status Agent-specific rules 7 mapped event types Phone decision Approve / reject wired Structured response · Event: PreToolUse hookd adapter Native hook config ~/.factory/settings.json Reply matching Per event 5 identifier fields
Qoderqoder Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PermissionRequest hookd adapter Native hook config ~/.qoder/settings.json Reply matching Per event 4 identifier fields
Ampampcode Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Approve / reject wired Structured response · Event: PermissionRequest hookd adapter JavaScript plugin ~/.config/amp/plugins/duckterm-hookd.ts Reply matching Per event 3 identifier fields
Geminigemini Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Status only hookd adapter Native hook config ~/.gemini/settings.json Reply matching Per event 3 identifier fields
DeepSeek Harnessdsh Contract-backed Lifecycle status Shared canonical rules 15 mapped event types Phone decision Status only hookd adapter Native hook config ~/.dsh/duckterm-hooks.json Reply matching Per event 3 identifier fields
Kimi Codekimi Contract-backed Questions: notification detail — answer on the computer Lifecycle status Shared canonical rules 15 mapped event types Phone decision Status only hookd adapter Native hook config ~/.kimi-code/config.toml Reply matching Per event 4 identifier fields

Structured questions are a separate axis from wired phone decisions. Capture without settlement (Kimi Code) is notification detail, not a phone form. Permission prompts for those agents are observed, not settled from the phone.

Verified outside contract v1

These workflows are exercised by dedicated hook or transcript code, but do not claim contract-only approval or correlation fields.

Cursor

cursor
Verified compatibility workflow

Native Cursor hook target with a tested policy overlay for its lower-camel-case events.

And the wider terminal-agent ecosystem

DuckTerm is a real SSH/Mosh terminal with direct tmux, psmux, and Herdr session entry, so any CLI/TUI still runs normally. Familiar logos show terminal/session context; they do not imply a dedicated hookd approval contract.

Qwen Code
OMP
Aider
Cline
GitHub Copilot
Windsurf
Warp
Augment
Kilo Code
Kiro
Manus
Roo Code
Any CLI / TUI →

How this stays honest

The website build imports the same embedded fixtures hookd tests. A contract Agent without a product-order slot fails the build. Runtime-only exceptions remain explicit, and validation-only eventMap.pushable is never presented as the live push gate.