CLI support matrix
This table describes agent-bridge 0.30.17, plus the unreleased Muse column. ✅ supported · ⚠️ partial (see footnotes) · ❌ not supported. Delegation rows describe the CLI running the job; “delegate from” describes the supervising session. Muse behavior is covered by protocol fixtures and subprocess tests; live Muse binary/provider acceptance remains pending.
| Feature | Claude Code | Codex | opencode | Antigravity | Muse |
|---|---|---|---|---|---|
| Session connection, peers, send/receive | ✅ | ✅ | ✅ | ✅ | ✅ |
| Messages while busy (hooks / next tool or model step) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Idle message delivery / auto-wake | ⚠️1 | ⚠️2 | ✅ | ⚠️3 | ⚠️4 |
Delegate to (spawn target) |
✅ | ✅ | ✅ | ✅ | ✅ |
| Delegate from (all five targets, including itself) | ✅ | ✅ | ✅ | ✅ | ✅ |
Follow-ups / resume (message_subagent) |
✅ | ✅ | ✅ | ✅ | ✅5 |
| Jobs in isolated git worktrees | ✅ | ✅ | ✅ | ✅ | ✅ |
| Live job steps, progress and ETA | ✅ | ✅ | ✅ | ✅ | ✅5 |
| Job model and effort selection | ✅ | ✅ | ⚠️6 | ✅ | ✅ |
list_models for this CLI |
⚠️7 | ✅ | ⚠️6 | ✅ | ✅8 |
Job access: read / ask / edit |
⚠️9 | ⚠️10 | ✅ | ✅ | ✅11 |
| Job approval relay to supervisor | ⚠️9 | ⚠️10 | ⚠️12 | ✅13 | ⚠️11 |
| Native job approval / sandbox options | ✅ permission_mode |
⚠️ sandbox, approvals_reviewer10 |
✅ auto_approve |
✅ terminal_sandbox, bypass_permissions |
✅ permission_profile11 |
| Nested bridge subagents (depth limit) | ✅ | ✅ | ⚠️14 | ✅ | ✅ |
| Scoped native child bridge addresses | ⚠️15 | ❌ | ❌ | ❌ | ❌ |
| Native children excluded from top-level registration | ✅ | ✅ | ✅ | ⚠️16 | ✅17 |
usage_limits for this CLI |
✅ | ✅ | ⚠️18 | ✅19 | ⚠️20 |
Native transcript ingestion and search_history |
✅ | ✅ | ✅ | ✅ | ✅ |
| Dashboard native chat and child transcripts | ✅ | ✅ | ✅ | ✅ | ✅ |
Owner questions (ask_owner) |
✅ | ✅ | ✅ | ✅ | ✅ |
Pinned decisions (decisions) |
✅ | ✅ | ✅ | ✅ | ✅ |
| Project main / secondary roles | ✅ | ✅ | ✅ | ✅ | ✅ |
| Paired-PC messaging | ✅ | ✅ | ✅ | ✅ | ✅ |
| Jobs on a paired PC | ✅ | ✅ | ✅ | ✅ | ✅ |
| Mobile app session / job visibility | ⚠️21 | ⚠️21 | ⚠️21 | ⚠️21 | ⚠️21 |
install / update setup |
✅ Marketplace plugin22 | ✅ Marketplace plugin22 | ✅ Native plugin22 | ✅ Native plugin22 | ✅ Native plugin23 |
Nested bridge delegation defaults to depth 2, configurable up to 3; depth, slot, ownership and hop guards apply to every CLI. Owner questions, decisions and project roles belong to top-level project sessions; delegated jobs use their supervisor. Jobs without allow_tools may use Pair Desk worker tools (reads, comments, progress, plans, steps, edit issues; creating issues and status, build or handoff writes are not included) without asking, in every access mode including read and ask; change or clear this with jobs.defaultAllowTools in the home config, or per job with allow_tools (a list replaces it, [] turns it off). Transcript views and search require the CLI’s local transcript files or database. Paired-PC jobs require an enabled remote-job policy, an allowed agent and an absolute working directory within the receiving PC’s allowed roots.
Footnotes
Section titled “Footnotes”-
Idle delivery uses a channel when enabled, the wake module on Claude Code 2.1.287+, or the host’s
asyncRewakeStop hooks. It depends on an available wake transport and the session’s wake settings; otherwise mail stays queued for a later prompt or inbox. ↩ -
Requires a known main-thread ID, native
codex queuesupport and a TUI consuming that queue. Queue acceptance does not confirm a started turn or read mail. Trust the bridge hooks in/hooksfor automatic injection. ↩ -
Active
PreInvocation/ Stop hooks deliver mail (retaining unread mail if a Stop continuation hits the native cap), but an already idle TUI cannot be woken. Queued mail arrives on the next turn or through inbox. ↩ -
Native command hooks deliver active-turn mail and can continue a stopping turn. Native idle-TUI wake is not confirmed; queued mail waits for another turn or inbox. ↩
-
Stable MSP v1 over
muse serveis the default job transport, including live steering and native item progress.AGENT_BRIDGE_MUSE_EXEC=1explicitly selects the exec compatibility path without MSP steering/approval relay. A failed MSP turn is never automatically replayed through exec. Resumed profile selection opts into the experimental, Muse-version-dependentsession/setPermissionProfileonly after initialize negotiates it, and verifies the resulting profile before a turn. Unsupported or rejected changes fail closed; diagnostics pin SDK 1.4.7 and report the served version/capability. Other jobs keep experimental APIs disabled. ↩ ↩2 -
The catalog is a non-exhaustive provider/model list and can be empty; explicit IDs still resolve at startup. Effort is a provider-specific variant. OpenCode 2 requires an explicit model when selecting effort. ↩ ↩2
-
Returns native help’s model aliases and effort levels, with alias fallbacks; Claude Code has no full model-catalog query here. ↩
-
MSP
model/listreports catalog IDs, defaults and effort variants without starting a session/turn. Empty or failed catalog reads mean unknown availability; explicit IDs still go to Muse for resolution. ↩ -
access: "ask"stays read-only, likeread: allowed native edits cannot reliably be intercepted. In editable modes, actual native permission prompts can be relayed through a PermissionRequest hook (Claude Code 2.1.268+, bundled hook and a launch without a shell); native allow/deny rules run first. ↩ ↩2 -
Access maps to Codex’s sandbox. In app-server jobs,
approvals_reviewerdefaults toauto_review; chooseuserfor forwarded native requests. Automatic review refusals can be escalated for a supervised retry without overriding sandbox policy. Full-access jobs and thecodex execfallback fix the reviewer touser. The exec fallback needs a trusted PermissionRequest hook forask; without it,access: "ask"stays read-only. ↩ ↩2 ↩3 -
MSP jobs require an enabled, approved native Bridge permission hook before turn submission, including edit jobs where it isolates native children. Read denies mutations; ask forwards mutation approvals even under native allow rules. An unavailable gate/supervisor cannot approve them. Edit retains native policy. Named profiles must match served session state before any turn. In explicit exec compatibility mode, ask behaves as read. ↩ ↩2 ↩3
-
access: "ask", and eligibleeditruns, relay native permission events through a private served session. Plain headless runs reject requests or auto-approve withauto_approve=true; those requests are not relayed. ↩ -
access: "ask"relays every non-reading tool through the installed PreToolUse gate.editdelegates workspace reads/writes (and pathless reading tools) to native policy—which still enforces native Ask/deny rules and soft-denies headless prompts—while relaying outside-workspace file actions, commands and external tools to the supervisor (auto_approve, preserving explicit native deny rules).bypass_permissionsexplicitly overrides the read/ask/edit access policy;terminal_sandboxis separate. ↩ -
Read-only opencode jobs’ tool allowlist enables delegation to the other four CLIs, including Muse, but omits opencode self-delegation,
list_modelsanddecide. Top-level opencode sessions expose all five targets. ↩ -
Claude only: a live native child gets
<parent>/sub:<agent_id>on its registered parent’s connection. It may use onlypeers,inboxandsend, with explicit child identity, ownership and hop limits; recipients are its parent, the parent’s owned jobs and exact local recipient grants. No independent registration, delegation, broadcast or remote address; remaining mail returns to the parent when the child ends. ↩ -
Antigravity ignores hooks for a child conversation on the parent’s shared server. It has no equivalent MCP caller-lineage admission check, so separate child-server registration is not established by this implementation. ↩
-
Native children share their root’s MCP server. Their PreToolUse gate denies Bridge tool calls to prevent root impersonation, and their delivery hooks cannot consume root mail or change root identity/activity. Sanitized delegated MCP processes restore owned parent/depth context and publish no top-level peer. Muse has no separate scoped native child Bridge address. ↩
-
opencode reports today’s spend/tokens and free-model information, not remaining provider quotas. ↩
-
Reads structured model quota buckets and reset times from
agy -p /usage --output-format json(requiresagy1.1.11+; older versions report unknown without starting a model turn). ↩ -
MSP session usage does not establish account quotas. Account limit availability is reported as unknown, without invented quota percentages or reset times. ↩
-
With the mobile gateway enabled and a phone paired, each enrolled PC exposes local registered sessions and retained jobs, with chats/steps where available. Paired-PC peer projections are excluded and native child hierarchy is not projected. ↩ ↩2 ↩3 ↩4 ↩5
-
npx -y github:rennerdo30/agent-bridge installsets up detected CLIs;updatepublishes their next runtime while retaining old versions. Claude gets MCP/channel support, hooks, the wake module, skills, commands and agent definitions. Codex gets MCP, skills and hooks (trust them in/hooks). opencode gets the native plugin withbridge_*tools, its runtime, skill and agent definitions for both plugin API generations. Antigravity gets the native plugin, MCP configuration, skill, delivery/permission hooks and a bridge MCP grant. Running integrations adopt updates on reload or restart; an existing broker keeps its version until its host closes or reloads. ↩ ↩2 ↩3 ↩4 -
Uses Muse’s native plugin manager and explicit capability approval on install. Update inspects changes; renewed capability approval requires separate review. The bundle includes MCP, command hooks, a coordination skill and peer commands. See Muse configuration for requirements and remaining live acceptance checks. ↩