Choosing a Harness

AMF treats Claude Code, Codex, OpenCode, and Pi as first-class agents, but they don't all expose the same hooks and CLI surface, so a few AMF features vary by harness. This page collects those differences in one place; each row links back to the page that documents the feature in full.

CapabilityClaude CodeCodexOpenCodePi
Permission modesVibeless, Vibe, SuperVibeVibe, SuperVibe — Vibeless is blockedVibeless, Vibe, SuperVibeSelectable, but has no effect — Pi does not receive AMF's permission-mode flags
Attention-state fidelityQuestion, Completed, and WaitingWaiting only — one lifecycle hook fires at turn-end with no way to tell a question from a completionQuestion, Completed, and WaitingNone — Pi has no lifecycle-hook mechanism
Learning Mode default run modeNo-tools (restricted); D re-asks with the repo readableAlways reads the repo — codex exec has no no-tools mode, so every answer is already a deep diveNo-tools (restricted); D re-asks with the repo readableNo-tools (restricted); D re-asks with the repo readable
Context-window trackingYesYesYesYes
Usage/quota sidebar (5h / 7-day windows)YesYesNo usage API is currently known for this harnessNo usage API is currently known for this harness
Saved-session resumeYesYesYesNot available
Prompt overridesYesYesYesYes

A few notes worth expanding on:

  • Vibeless relies on AMF's per-edit review hooks. Claude Code and OpenCode support them; Codex does not, so AMF blocks selecting Vibeless for a Codex feature outright rather than silently downgrading it. Pi supports none of AMF's permission-mode integration, so any mode can be selected but none changes Pi's own behavior.
  • Attention-state fidelity depends entirely on what each harness's lifecycle hooks report. Codex's single end-of-turn hook can't distinguish a question from a finished turn, so every stopped Codex session shows as Waiting. Pi has no hook mechanism at all, so its sessions carry no attention state.
  • Learning Mode answers are always harness-neutral in wording (the newcomer/familiar level and explain/change intent apply the same way to all four); what varies is only whether the default answer can read the repository.