Skip to content

Quick Reference

This chapter collects every CLI command, variable, and YAML option in one place. No explanations — just the facts. Use it when you know what you need and just need the syntax.


CommandDescription
archon workflow listList all available workflows
archon workflow list --jsonMachine-readable JSON output
archon workflow run <name> "<prompt>"Run a workflow
archon workflow run <name> --branch <name> "<prompt>"Run with an explicit branch
archon workflow run <name> --no-worktree "<prompt>"Run in the live checkout (no isolation)
archon workflow run <name> --cwd /path "<prompt>"Run against a specific directory
archon workflow statusShow status of active workflow runs
archon workflow resume <run-id>Resume a failed workflow run
archon workflow abandon <run-id>Abandon a non-terminal workflow run
archon workflow cleanup [days]Delete old workflow run records (default: 7 days)
CommandDescription
archon isolation listList all active worktrees
archon isolation cleanupRemove stale worktrees (older than 7 days)
archon isolation cleanup <days>Remove stale worktrees older than N days
archon isolation cleanup --mergedRemove worktrees whose branches merged into main
archon isolation cleanup --merged --include-closedAlso remove worktrees with closed (abandoned) PRs
CommandDescription
archon complete <branch>Remove worktree, local branch, and remote branch
archon complete <branch> --forceSkip uncommitted-changes check
CommandDescription
archon validate workflowsValidate all workflow definitions
archon validate workflows <name>Validate a single workflow
archon validate workflows <name> --jsonMachine-readable validation output
archon validate commandsValidate all command files
archon validate commands <name>Validate a single command
Terminal window
archon version

Variables are substituted at runtime in command bodies and workflow prompt: fields.

VariableAvailable InContains
$ARGUMENTSCommands, promptsAll arguments passed to the command as a single string
$1, $2, $3Commands, promptsFirst, second, third positional arguments
$ARTIFACTS_DIRCommands, promptsAbsolute path to the workflow run’s artifact directory
$WORKFLOW_IDCommands, promptsThe current workflow run ID
$BASE_BRANCHCommands, promptsBase git branch (auto-detected or set via worktree.baseBranch)
$DOCS_DIRCommands, promptsDocumentation directory path (default: docs/)
$<nodeId>.outputDAG when: conditions, downstream prompt: fieldsThe text output from a completed node

Examples:

Terminal window
# Pass a module name to a command
archon workflow run my-workflow "auth"
# $ARGUMENTS = "auth", $1 = "auth"
# Multi-argument
archon workflow run my-workflow "auth refresh-tokens"
# $ARGUMENTS = "auth refresh-tokens", $1 = "auth", $2 = "refresh-tokens"
# Reference a node's output in a condition
- id: implement
command: implement-changes
when: "$classify.output.type == 'BUG'"

FieldRequiredTypeDescription
nameYesstringIdentifies the workflow in archon workflow list
descriptionYesstringShown in listings and used by the router
nodesYesarrayDAG nodes (see Node Options below)
providerNoclaude | codexAI provider for all nodes (default: claude)
modelNostringModel for all nodes (sonnet, opus, haiku, or full model ID)
modelReasoningEffortNostringCodex only: minimal | low | medium | high | xhigh
webSearchModeNostringCodex only: disabled | cached | live
additionalDirectoriesNostring[]Extra directories available to the AI

All nodes share these base fields:

FieldRequiredTypeDescription
idYesstringUnique node identifier; used in depends_on and $nodeId.output
commandOne ofstringName of a command file in .archon/commands/
promptOne ofstringInline AI instructions
bashOne ofstringShell script (runs without AI; stdout captured as $nodeId.output)
loopOne ofobjectLoop configuration (see Loop Options below)
depends_onNostring[]Node IDs that must complete before this node runs
whenNostringCondition expression; node is skipped if false
trigger_ruleNostringJoin semantics when multiple upstreams exist (see Trigger Rules)
providerNoclaude | codexPer-node provider override
modelNostringPer-node model override
contextNofresh | sharedSession context — fresh starts a new conversation, shared inherits from prior node
output_formatNoJSON SchemaEnforce structured JSON output from this node
allowed_toolsNostring[]Restrict available tools to this list (Claude only)
denied_toolsNostring[]Remove specific tools from this node’s context (Claude only)
idle_timeoutNonumberPer-node idle timeout in milliseconds (default: 5 minutes)
retryNoobjectRetry configuration for transient failures (see Retry Options)
hooksNoobjectSDK hook callbacks (Claude only; see Hook Schema)
mcpNostringPath to MCP server config JSON file (Claude only)
skillsNostring[]Skill names to preload into this node’s context (Claude only)

bash node timeout: The timeout field on bash nodes is in milliseconds (default: 120000). This differs from hook timeout, which is in seconds.

ValueBehavior
all_successRun only if all upstream nodes succeeded (default)
one_successRun if at least one upstream node succeeded
none_failed_min_one_successRun if no upstream failed and at least one succeeded
all_doneRun after all upstream nodes complete, regardless of result

Defined under loop: inside a node:

FieldRequiredTypeDescription
promptYesstringAI instructions executed each iteration
untilYesstringCompletion signal string — loop ends when AI output contains this
max_iterationsYesnumberMaximum iterations before the node fails
fresh_contextNobooleanStart a new session each iteration (default: false)
until_bashNostringShell script run after each iteration; exit 0 signals completion

Example:

- id: refine
loop:
prompt: "Review the current draft and improve it. Output COMPLETE when done."
until: "COMPLETE"
max_iterations: 5

Defined under retry: inside a node:

FieldRequiredDefaultDescription
max_attemptsYesRetry attempts after the initial failure (max: 5)
delay_msNo3000Initial delay in milliseconds; doubles each attempt (1000-60000)
on_errorNotransienttransient retries rate limits/network errors; all retries everything except fatal errors

Fatal errors are never retried: auth failures, permission errors, and exhausted credit balances fail immediately regardless of retry config.


Hooks are defined per-node under hooks:. See Chapter 9 for full examples.

hooks:
PreToolUse:
- matcher: "Write|Edit" # Regex against tool name. Omit to match all.
timeout: 60 # Seconds. Default: 60.
response:
hookSpecificOutput:
hookEventName: PreToolUse
additionalContext: "Verify the file before writing"
permissionDecision: deny # allow | deny | ask
permissionDecisionReason: "Not allowed in this node"
updatedInput: # Override tool arguments
file_path: "/sandbox/out.ts"
PostToolUse:
- matcher: "Read"
response:
hookSpecificOutput:
hookEventName: PostToolUse
additionalContext: "This file is read-only. Do not modify it."
Hook EventWhen it fires
PreToolUseBefore a tool executes
PostToolUseAfter a tool completes successfully
PostToolUseFailureAfter a tool fails
SessionStart / SessionEndOn session lifecycle events
StopWhen the agent stops

~/.archon/
├── config.yaml # Global configuration (non-secrets)
├── archon.db # SQLite database (default; no DATABASE_URL needed)
└── workspaces/
└── <owner>/
└── <repo>/
├── source/ # Git clone or symlink to local path
├── worktrees/ # Per-task git worktrees
├── artifacts/ # Workflow artifacts (never committed)
└── logs/ # Workflow execution logs (JSONL)
.archon/
├── config.yaml # Repo-specific configuration
├── commands/ # Custom command files (*.md)
│ └── my-command.md
└── workflows/ # Custom workflow files (*.yaml)
└── my-workflow.yaml

Bundled defaults — built-in commands and workflows ship with Archon and load automatically. Repo-level files with the same name override the bundled version. To disable defaults entirely:

.archon/config.yaml
defaults:
loadDefaultCommands: false
loadDefaultWorkflows: false

ErrorLikely CauseFix
Workflow "X" not foundYAML file not discoveredCheck file is in .archon/workflows/ and archon workflow list shows it
Command "X" not foundCommand file missingCheck .archon/commands/X.md exists and archon validate commands X passes
Routing unclear — falling back to archon-assistNo workflow matched the inputUse an explicit workflow name: archon workflow run my-workflow "..."
Worktree already exists for branch XPrior run left a worktreeRun archon complete X or archon isolation cleanup
Not a git repositoryRunning outside a repocd into a git repo first — workflow and isolation commands require one
Model X is not valid for provider YProvider/model mismatchUse Claude models (sonnet, opus, haiku) with provider: claude; use other models with provider: codex
$BASE_BRANCH referenced but could not be detectedNo base branch set and auto-detection failedSet worktree.baseBranch in .archon/config.yaml or ensure main/master exists
Workflow hangs with no outputNode idle timeout hitIncrease idle_timeout on the node (milliseconds)

See what Archon found:

Terminal window
archon workflow list # Are your workflows loaded?
archon validate workflows # Any YAML errors?
archon isolation list # Any stale worktrees?

Enable verbose logging:

Terminal window
archon --verbose workflow run my-workflow "..."

Check execution logs — each run writes a JSONL log:

~/.archon/workspaces/<owner>/<repo>/logs/

Run without isolation to simplify debugging:

Terminal window
archon workflow run my-workflow --no-worktree "..."

Test a command directly before embedding it in a workflow:

Terminal window
archon workflow run archon-assist "/command-invoke my-command some-arg"

You’ve covered the full guide — from mental model to hooks to this reference. When you need to look something up quickly, this is the page to come back to.