Agent-Client Capability Parity Tracker

Status: Living record — the external coding clients change weekly; this is the dated, owned source of truth for what each does and what DPF depends on / should adopt. Owner: Enterprise Architect persona / dpf-platform:dpf-architecture-review. Refresh cadence: Monthly (see “Refresh ritual”). Last full refresh: 2026-06-20. Last verified: 2026-08-12 (Codex MCP host-registry acceptance — see update below). Standard it serves: docs/architecture/context-engineering-standards.md.

Why this exists

DPF runs across, and is driven by, external coding agents (Claude Code, Codex, Grok Build, OpenCode) plus our own native local LLM. Their context/memory/tool mechanisms change weekly — new token-savers ship (deferred tools, code-execution), conventions converge (AGENTS.md), and behaviours regress (the prompt-cache TTL silently reverted 1h → 5m). A point-in-time analysis decays fast. This tracker keeps the design criteria applicable to subsequent changes by recording, per client, the capabilities we depend on or could adopt, with a last-verified date and a DPF adoption status, so the monthly scan diffs against something concrete and files follow-up work.

Adoption status legend: ✅ adopted · ◐ partial/planned · ⬜ not adopted · ➖ n/a · ⚠️ regression to track.

Client capability profile (generated, BI-64795FD0)

Since 2026-10-13 the per-client capabilities that DPF rules depend on live in one machine-readable profile, packages/dpf-skill-pack/client-capabilities.json. The MCP credential policy, the toolchain floor, the release manifest’s clients map and the matrix below all read it. A value changes only through a reviewed PR that cites a source passage and a live probe.

The sections after the matrix are the dated prose history. They stay as the record of how each finding was reached.

Rendered from packages/dpf-skill-pack/client-capabilities.json. Edit the profile, never this block. “unproven” means no live probe is recorded, so every rule treats the capability as absent. Server-side controls stay the guarantee; a missing hook is a missing accelerator, shown here so it is not silent.

Client Verified version OAuth https OAuth loopback http Static headers Declaration carrier Plugin scopes Reload required Skills load Hook plane
Claude Code (claude-code) 2.1.295 yes (encoded, not live-proven) no (verified 2026-09-17) yes (encoded, not live-proven) header (encoded, not live-proven) user, project, local (encoded, not live-proven) yes (encoded, not live-proven) yes (verified 2026-07-26) cli: hooks unproven; desktop: verified; ide: hooks unproven
Codex CLI (codex) 0.155.0-alpha.16 yes (encoded, not live-proven) yes (verified 2026-09-20) unproven header (encoded, not live-proven) user (encoded, not live-proven) yes (encoded, not live-proven) yes (verified 2026-07-26) cli: verified; desktop: hooks unproven; ide: hooks unproven
Grok Build (grok) 0.2.87 unproven unproven unproven query (encoded, not live-proven) user (encoded, not live-proven) yes (encoded, not live-proven) yes (verified 2026-07-26) cli: verified; desktop: hooks unproven; ide: hooks unproven
Antigravity (antigravity) none yes (encoded, not live-proven) unproven yes (encoded, not live-proven) header (encoded, not live-proven) unproven yes (encoded, not live-proven) unproven cli: hooks unproven; desktop: hooks unproven; ide: hooks unproven
VS Code (vscode) none yes (encoded, not live-proven) unproven yes (encoded, not live-proven) unproven unproven unproven unproven cli: hooks unproven; desktop: hooks unproven; ide: hooks unproven

Hook plane by host.

Client Host Events Deny envelope Permission modes Verified Evidence
claude-code cli hooks unproven hookSpecificOutput none no No live probe of the terminal host is recorded. The desktop proof (BI-E5C45F61) ran the same Claude Code version in another host.
claude-code desktop fires: PreToolUse shell, PreToolUse ask; unproven: SessionStart, PreToolUse write, UserPromptSubmit, Stop, SessionEnd hookSpecificOutput bypassPermissions 2026-10-13, v2.1.295 docs/superpowers/specs/2026-07-03-harness-enforced-decision-routing-and-lease-punt-gates-design.md §15.1 (BI-E5C45F61, #6287): desktop app 2.31226.1 ran every PreToolUse hook but discarded a top-level decision “deny”; with the fix, compose-guard and decision-routing-guard probes were denied live. The 2026-10-07 reading that the AskUserQuestion matcher was skipped (BI-271B8EEC) was disproven there.
claude-code ide hooks unproven hookSpecificOutput none no No probe recorded for the IDE extension host.
codex cli fires: PreToolUse shell; does not fire: PreToolUse ask; unproven: SessionStart, PreToolUse write, UserPromptSubmit, Stop, SessionEnd hookSpecificOutput codex exec with hook trust granted 2026-07-07, v0.142.5 docs/superpowers/specs/2026-07-03-harness-enforced-decision-routing-and-lease-punt-gates-design.md §11 (BI-883FC2FC): a lease-punt probe ran without hook trust and was denied with it. The ask tool is not named AskUserQuestion, so that matcher never fires (BI-B22DE548). Single plugin plane since #5636 (BI-2B634E68, codex-cli 0.155.0-alpha.16).
codex desktop hooks unproven hookSpecificOutput none no No probe recorded for the Codex desktop host.
codex ide hooks unproven hookSpecificOutput none no No probe recorded for the Codex IDE extension host.
grok cli fires: SessionStart, PreToolUse shell, Stop; unproven: PreToolUse ask, PreToolUse write, UserPromptSubmit, SessionEnd dual headless grok -p 2026-07-07, v0.2.87 docs/superpowers/specs/2026-07-03-harness-enforced-decision-routing-and-lease-punt-gates-design.md §11.1 (BI-883FC2FC): a prisma migrate probe was denied in a DPF worktree and ran in a bare folder. Grok ignores plugin-bundled hooks. The SessionStart and Stop session plane is wired globally (BI-BCA23DBB) and was sampled live on 2026-07-26.
grok desktop hooks unproven dual none no No probe recorded for the Grok desktop app.
grok ide hooks unproven unknown none no No Grok IDE host is known to DPF.
antigravity cli hooks unproven unknown none no docs/architecture/agent-client-capability-parity.md governance table G3: hooks unproven, an honest gap
antigravity desktop hooks unproven unknown none no No probe recorded.
antigravity ide hooks unproven unknown none no No probe recorded.
vscode cli hooks unproven unknown none no VS Code has no DPF hook plane.
vscode desktop hooks unproven unknown none no VS Code has no DPF hook plane.
vscode ide hooks unproven unknown none no VS Code has no DPF hook plane.

Capability matrix (verified 2026-06-20)

Capability Claude Code Codex CLI Gemini CLI Grok Build OpenCode DPF dependency / adoption
Instruction file CLAUDE.md + memory AGENTS.md (originated) GEMINI.md reads CLAUDE.md AGENTS.md (+reads CLAUDE.md) AGENTS.md canonical; plugin ships skills+hooks cross-surface. ✅
Compaction style summarize + tool-result clearing encrypted latent-state /compress (lossy) window scale-out auto//smol window-aware compactAgenticMessages. ✅
Out-of-window instruction retention system reminders — /memory add pin — Focus-Chain-like withPlanReminder re-injects plan every iteration. ✅ (ahead)
Prompt caching / cache boundary static/dynamic boundary; ⚠️ TTL 1h→5m (2026-03) prefix cache prefix cache n/a (beta) provider-dependent SYSTEM_PROMPT_DYNAMIC_BOUNDARY mirrored; local prefix-KV ◐ (R6 verify). ⚠️ track TTL.
Deferred / search-based tool loading Tool Search Tool (defer_loading, ~85% list cut) host-deferred catalog observed in Desktop; Streamable HTTP omits User-Agent and mid-turn list_changed does not refresh the callable registry all enabled discovers MCP per-tool wildcard perms native and external paths share intent matching; Claude Code/Codex bootstrap with explicit ?tier=full, while generic/Grok/unknown clients keep core and may expand with load_tools. ✅ contract; fresh-host acceptance required per release.
Code execution / programmatic tool calling code-exec w/ MCP (37–98% cut) sandboxed shell — — — run_tool_script shipped dark ◐ (R4; governed read-only, flag+grant gated, live-verify pending).
Tool-result cap ~25K-token default — — — — tool-result-budget.ts (native + MCP route). ✅
Subagents / context isolation Task subagents subagents subagents (tool allowlist) up to 8 parallel primary+sub Build Studio specialists; A2A. ✅
Skills (progressive disclosure) SKILL.md (desc always, body on demand) skills — Claude-skill compatible — Block-5 skill summaries not bodies. ✅
Deterministic guards (hooks) PreToolUse… adopted hook protocol — reads Claude hooks — kernel runtime gate + plugin prechecks. ✅ (ahead)
MCP support yes yes yes yes yes (wildcard perms) /api/mcp/v1 JSON-RPC; 242-tool registry. ✅
Context window (base) ~200K ~200K+ 1M 2M (CLI) provider-dependent local served ~24,576 (binding). ➖

Sources for the row data are catalogued in the design spec appendix (2026-06-20-context-engineering-tool-efficiency-design.md).

2026-06-26 refresh (delivery-surface sweep)

Verified 2026-06-26 against the delivery-surface optimization study (docs/superpowers/specs/2026-06-26-delivery-surface-optimization-study-design.md). Deltas since the 2026-06-20 full refresh:

2026-07-24 refresh (BI-14E9F7CE closeout — Grok hook portability)

Reconciles the “Functional proof on Codex/Grok still pending” line above (2026-06-26 refresh) with work that landed in between and was not cross-referenced back to this tracker:

Refresh ritual — operationalization (BI-4B8EABF8 follow-up). The monthly ritual below is documented; wiring it as an actual scheduledAgentTask on the existing agent-task-scheduler.ts / agent-task-dispatch.ts substrate (read official docs → diff this tracker → file a BI per material drift → record sources + verification age) is the remaining code slice. No new cron — reuse the cognitive-load-migration scan substrate.

Governance outcomes (G1–G9) — multi-client parity

Spec: docs/superpowers/specs/2026-07-26-multi-client-governance-parity-design.md
Plan: docs/superpowers/plans/2026-07-26-multi-client-governance-parity.md
Last verified (live install sample): 2026-07-26. Outcomes are required; mechanisms may differ per client (thin adapters).

Outcome Meaning
G1 Skills dpf-platform skills installed and loadable
G2 Competitive Known competitive process plugins disabled (disable-not-delete), not merely warned
G3 Plane-1 hooks lease / lease-punt / root-clone / compose / decision-routing / plan-backlog fire and can deny
G4 Session plane SessionStart process-spine + competitive; SessionEnd/Stop uncommitted + lease/capsule release where events exist
G5 MCP DPF_MCP_BEARER_TOKEN wired; tools reachable when portal not quiescing
G6 Workroom Work claims a workroom / FeatureBuild; orphans detectable
G7 Worktree lifecycle Canonical sibling base; Tier-A reaping; no nested-root sprawl as steady state
G8 Headless-safe Always-approve / non-interactive still honors deny; no operator TUI required
G9 Readiness record_surface_readiness / bootstrap readiness observable
Client G1 G2 G3 G4 G5 G6 G7 G8 G9 Notes (2026-07-26, Wave 3 update)
Claude Code (host) ✅ ✅ disable ✅ dual plane ✅ plugin ✅ ◐ ◐ create + session hygiene ✅ ◐ BI-A4BEFE99: claude plugin disable adapter
Codex CLI (host) ✅ ✅ disable ✅ if hook-trust ✅ ✅ ◐ ◐ ✅ ◐ Hook-trust fail-open until trusted
Grok Build (host) ✅ ✅ disable ✅ global only ✅ SessionStart/Stop ✅ ◐ ◐ session hygiene + janitor ✅ ◐ BI-BCA23DBB: global hooks + competitive
Grok (Build Studio sandbox) ✅ seed ◐ ◐ seeded guards ➖ ◐ ✅ BS ➖ ◐ always-approve + guards ◐ BI-C5F9A232: pack seeded at dispatch
Antigravity (agy) ◐ pack ⬜ unsupported ⬜ unproven ⬜ ◐ MCP wire ◐ ⬜ ❓ ⬜ No plugin-disable CLI; hooks unproven — honest gap
Build Studio (agentic in-portal) ✅ seed skills ➖ runtime gates ➖ ✅ ✅ sandbox GC ✅ phase HITL ◐ Not CLI-hook based; BS worktree GC landed
OpenCode (suggested / BS dispatch) ⬜ ⬜ ⬜ ⬜ ◐ ✅ BS ➖ ❓ ⬜ Checklist only until product pull — see skill-pack README
Gemini CLI (suggested) ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ⬜ ❓ ⬜ Checklist only until product pull
Cursor (compat / optional) ⬜ ⬜ ◐ via Grok compat paths ⬜ ⬜ ⬜ ⬜ ❓ ⬜ Hook event aliases; not first-class bootstrap

Backlog (filed 2026-07-26): BI-F4A1A0DC (docs/matrix), BI-BCA23DBB (Grok host plane + competitive), BI-C5F9A232 (BS Grok seed), BI-42FA7DD8 (worktree Tier-A reap), BI-A4BEFE99 (remaining clients equalize), BI-8BD61C30 (BS sandbox GC). Waves 0–3 implementation shipped via PRs #3594–#3601 + this branch.

Suggested-client adapter checklist (OpenCode / Gemini / Cursor)

Promote a suggested client only after each gate has evidence (or an explicit “comply by construction” note):

  1. G1 Skills — install path for dpf-platform skills (plugin / skills dir / seed).
  2. G2 Competitive — non-destructive disable of process-spine-replacements.json competitive ids.
  3. G3 Plane-1 hooks — lease / root-clone / compose deny, or documented substitute.
  4. G4 Session — SessionStart/End plane where the client exposes events.
  5. G5 MCP — token env + snippet format.
  6. G6 Workroom — external executor kind + evidence attribution.
  7. G7 Worktree — canonical sibling base + hygiene hooks when events exist.
  8. G8 Headless — non-interactive still honors deny.
  9. G9 Readiness — bootstrap or dispatch readiness observable.

Source checklist also lives in packages/dpf-skill-pack/README.md (adapter checklist section).

What this currently tells us (the open adoption gaps)

Refresh ritual (monthly — how this stays fresh)

Update 2026-10-13 (BI-64795FD0): step 1 is now wired. The weekly client-capability-reverify-weekly task reads each profile row’s declared sources and files proposals; see “Client capability profile” above. Steps 2 and 3 are how a person acts on a proposal: verify with a live probe, then change the profile by PR.

Reuse existing substrate; no new cron, no new system:

  1. Trigger. A monthly scheduledAgentTask (the agent-task-scheduler.ts / agent-task-dispatch.ts substrate already used by the cognitive-load-migration scan) dispatches the refresh to the Enterprise Architect persona on the 1st.
  2. Method. For each client, read the official docs (the dpf-platform:claude-api skill rule applies — never answer from memory) and diff against this matrix. The claude-code-guide agent type and web research cover the non-Anthropic clients.
  3. Output. Update the cells + Last verified dates here; for each new token-saver worth adopting or each regression/deprecation, file a backlog item (dpf-file-backlog-item) linked to the context-engineering epic, and update context-engineering-standards.md if a criterion shifts.
  4. Graph projection (planned). Project the matrix as nodes/edges in the living-architecture-graph (EP-ARCH-GRAPH-LIVE) so staleness is queryable and the Parity Engine surfaces drift automatically — the durable home once R-graph wiring lands.