Skip to main content

Authority Model

The beta-tester confusion was justified: AgentXchain authority is not one setting. You must choose across three independent axes:

  1. Protocol authority: write_authority
  2. Runtime transport: manual, local_cli, api_proxy, mcp, remote_agent
  3. Tool execution authority: the downstream CLI's own sandbox / approval mode

If you collapse those into one idea, you will misconfigure the run.

The Three Axes

AxisConfig surfaceWhat it answersTypical values
Protocol authorityroles.<id>.write_authorityWhat kind of output the turn is allowed to produceauthoritative, proposed, review_only
Runtime transportruntimes.<id>.typeHow the work is executed and whether the transport can physically writemanual, local_cli, api_proxy, mcp, remote_agent
Tool execution authorityruntime command flags or external sandboxWhat the downstream tool can actually do at runtimeclaude --dangerously-skip-permissions, codex --dangerously-bypass-approvals-and-sandbox, provider-side no-write APIs

Axis 1: write_authority

write_authority is the governed contract for the role:

  • authoritative: the role owns direct output and may complete workspace-writing turns.
  • proposed: the role may produce patch-shaped proposals that require explicit apply or acceptance.
  • review_only: the role may review, challenge, attest, and write review artifacts only.

This is the protocol-level promise. It is not the same thing as the runtime's physical capabilities.

Axis 2: Runtime Type

Runtime type determines how the turn is executed:

  • manual: human-in-the-loop; the operator performs the work.
  • local_cli: a local subprocess with direct access to the repo.
  • api_proxy: provider API call; no direct local repo writes.
  • mcp: tool-defined behavior; capability depends on the MCP server.
  • remote_agent: remote HTTP service; proposal/review only in the current contract.

For the full valid binding matrix, see the Runtime Matrix.

Axis 3: Downstream CLI Sandbox / Approval Mode

This axis matters most for local_cli.

AgentXchain can mark a role authoritative, but the downstream tool still needs enough permission to perform unattended writes. If the CLI keeps its own approval prompt or sandbox restriction, the governed turn is not truly unattended even if the config says authoritative.

Local CLI authority examples

GoalRuntimewrite_authorityTool modeResult
Human review onlymanualreview_onlyn/aValid
Unattended Claude Code implementationlocal_cliauthoritativeclaude --print --dangerously-skip-permissionsValid
Unattended Codex implementationlocal_cliauthoritativecodex --quiet --dangerously-bypass-approvals-and-sandbox {prompt}Valid
Codex with weaker approval modelocal_cliauthoritativecodex --quiet --full-auto {prompt}Not sufficient for fully authoritative unattended local writes
Remote model reviewapi_proxyreview_onlyprovider APIValid
Remote proposed patch flowapi_proxyproposedprovider APIValid
Review-only local subprocesslocal_clireview_onlyany flagsInvalid

Why codex --full-auto is not enough for authoritative unattended turns

--full-auto and "approval mode" settings are about Codex's own interaction model. They are not the same thing as giving the subprocess full governed write authority in the local repo. For authoritative unattended AgentXchain turns, use:

{
"type": "local_cli",
"command": ["codex", "--quiet", "--dangerously-bypass-approvals-and-sandbox", "{prompt}"],
"cwd": ".",
"prompt_transport": "argv"
}

If you want a safer or more review-oriented flow, use proposed with a remote runtime, or keep the role on manual.

Why review_only + local_cli is invalid

local_cli exposes a local subprocess with repo access. Even if the prompt says "review only", the runtime itself can write. That is why agentxchain validate rejects review_only + local_cli.

Use one of these instead:

  • review_only + manual
  • review_only + api_proxy
  • review_only + remote_agent
  • review_only + mcp when the MCP tool contract is truly review-only

Pattern A: Human planning, automated implementation

  • PM: review_only + manual
  • Dev: authoritative + local_cli
  • QA: review_only + api_proxy

This is the mixed-mode default because each role's authority matches the transport realistically.

Pattern B: Full local CLI automation with human gates

  • PM: authoritative + local_cli
  • Dev: authoritative + local_cli
  • QA: authoritative + local_cli
  • Director: authoritative + local_cli
  • Human approvals stay at the phase gates

This is the "all automated turns, human gate approvals only" pattern. The runtime commands must use real unattended authority flags.

Pattern C: Editor + terminal hybrid

Tools like Cursor and Windsurf are editors, not governed runtimes. The editor does not set authority. The governed runtime is still the separate CLI tool running in the integrated terminal.

Example:

  • Editor: Cursor
  • Runtime: local_cli
  • Tool: Claude Code or Codex
  • Authority outcome: determined by write_authority plus the CLI's own flags

Decision Rules

Use this order when configuring a role:

  1. Choose the role's governed intent with write_authority.
  2. Choose a runtime that can honestly satisfy that intent.
  3. If the runtime is local_cli, choose downstream CLI flags that match the governed intent.

If those three choices disagree, the config is wrong.