nextv2.0.0
Agent harnesses

Unattended runs

The permission mode each harness runs in when no one can answer a prompt, and where its tool calls go.

This page lists the permission mode Kraft runs each harness in. A worker has nobody to answer a permission prompt, so Kraft runs each CLI in its classifier mode where it has one, and otherwise in its most autonomous unattended mode. A classifier is the CLI's own automatic approver. What Kraft itself needs from a worker, its result file and its commits, is granted explicitly and never left to a classifier.

HarnessModeClassifierExtras Kraft addsTool lists
claude--permission-mode autoyesKraft's MCP permission tool answers what the classifier does not settle.Asked through the gate
codexapprove-for-me, set with -c keysyesExplicit writable roots for the result file and .git. Kraft's PreToolUse hook, trusted per launch, when the policy has something to enforce.Asked through the gate (hook); the hook's deny blocks
cursor--auto-reviewyesA per-launch config with commit attribution off. Kraft's preToolUse hook when the policy has something to enforce.Asked through the gate (hook); the hook's deny blocks, its allow does not outrank the classifier
opencode--autonoThe task's tool policy as per-launch config rules (--standalone), when it has any.Rules enforced by OpenCode; no permission gate, nothing logged
ampnone: Amp approves by defaultnoThe task's tool policy as a per-launch settings file, when it has any.Rules enforced by Amp; no permission gate, nothing logged
gemini--approval-mode yolo, unless the task sets anothernoNone.Refused: a task with deny_tools or allowed_tools does not launch. No call reaches the gate
antigravity--dangerously-skip-permissionsnoNone.Refused: a task with deny_tools or allowed_tools does not launch. No call reaches the gate

A tool list is enforced one of three ways: the permission gate answers a call (claude, codex, cursor), the CLI enforces rules Kraft wrote for the launch (opencode, amp), or Kraft refuses the task (gemini, antigravity). The permission gate says how a call reaches Kraft and how Kraft decides it.

Notes by harness

  • Codex. Codex runs in its approve-for-me mode, the counterpart of Claude's auto. The sandbox is workspace-write. A sandbox escalation the model asks for goes to Codex's automatic reviewer (approval_policy=on-request, approvals_reviewer=auto_review), not to a person. A permission_mode of read-only or danger-full-access (a harness profile's defaults: or a task) changes the sandbox, and the reviewer stays on in every mode.
  • Codex in a docker sandbox. The default becomes danger-full-access (container_permission_mode). Codex's own sandbox cannot start inside a container, and the container is the boundary. See Sandboxed workers.
  • Cursor. --auto-review is Cursor's Smart Auto: a server-side classifier runs the tool calls it judges safe and refuses the rest. Without a mode, print mode only proposes edits and applies none. permission_mode: force overrides it.
  • Amp. amp takes no permission_mode: it asks for no approvals.
  • Antigravity. Every launch passes --dangerously-skip-permissions, since headless agy otherwise denies every file write and shell command and still exits 0. Kraft therefore has no per-action control over an agy worker. The worktree is the boundary, and a sandbox bounds what it can reach.
Copyright © 2026