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.

12 Tested workflows
9 Canonical contract rows
6 Wired phone decision paths

Contract v1 defines 9 Agents and 7 decision schemas. OpenCode’s decision schema is present, but its installed lifecycle plugin does not yet wire permission replies; it is marked pending below.

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 turn 5 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 14 mapped event types Phone decision Decision contract; adapter pending Terminal decision · 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 14 mapped event types Phone decision Status only hookd adapter TypeScript extension ~/.pi/agent/extensions/duckterm-hookd.ts Reply matching Per event 3 identifier fields
Droiddroid Contract-backed Lifecycle status Shared canonical rules 14 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PermissionRequest hookd adapter Native hook config ~/.factory/settings.json Reply matching Per event 3 identifier fields
Qoderqoder Contract-backed Lifecycle status Shared canonical rules 14 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PermissionRequest hookd adapter Native hook config ~/.qoder/hooks.json Reply matching Per event 3 identifier fields
Ampampcode Contract-backed Lifecycle status Shared canonical rules 14 mapped event types Phone decision Approve / reject wired Terminal decision · Event: PermissionRequest hookd adapter Native hook config ~/.ampcode/hooks.json Reply matching Per event 3 identifier fields
Geminigemini Contract-backed Lifecycle status Shared canonical rules 14 mapped event types Phone decision Status only hookd adapter Native hook config ~/.gemini/settings.json Reply matching Per event 3 identifier fields

Verified outside contract v1

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

Grok Build

grok
Verified compatibility workflow

First-party Grok hook and deferred transcript completion path; Agent-specific lifecycle rules.

Cursor

cursor
Verified compatibility workflow

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

Devin

devin
Verified compatibility workflow

Dedicated Devin config target with compatibility re-attribution and shared lifecycle policy.

And the wider terminal-agent ecosystem

DuckTerm is a real SSH, Mosh, and tmux terminal, so any CLI/TUI runs normally. It also recognizes these familiar brands in terminal and session context; the logos do not imply a dedicated hookd approval contract.

Kimi
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.