View / Claude Code status line

V02 / View

Claude Code status line

Add an opt-in Claude Code status line for active Guild Stack runs: loop round, cap, loop mode, restart count, and phase signal when available.
First move
Enable the optional Claude Code readout
Expected receipt
portable fallback: /guild:status
Last verified
Jun 10, 2026

Page evidence and guidance

Read as StartCurrent phase, progress, and the next meaningful action. SteerRun identity, initiative state, liveness, cost, review, and configuration. ExtendRead-only data ownership, fallbacks, stale state, and output contracts.

The Guild Stack status line is a short, opt-in Claude Code prompt readout for active runs. Use it when you want pane-level loop visibility; use /guild:status, Observability, and Configuration for the main run and settings references.

Operational mapThe active run stays glanceable.
  1. RUN ACTIVE
  2. BUILDphase
  3. R2 / 3round
  4. NORMALloop
  5. RESTART 0recovery
Mode A steady-state output: phase, round, cap, loop mode, restart count.

Mode A — steady state

phasebuild
round2
cap16
loopsdeep
restarts0

This is intentionally narrow. It does not replace the dashboard, trace logs, or the lightweight /guild:status command.

Enable It

There are two pieces:

  1. Tell Claude Code to invoke the script through user-level statusLine config.
  2. Tell Guild Stack to allow output by enabling the statusline setting or exporting GUILD_STATUSLINE=1.

Claude Code config:

{
  "statusLine": {
    "type": "command",
    "command": "${CLAUDE_PLUGIN_ROOT}/scripts/statusline-guild.sh"
  }
}

Guild Stack config:

/guild:config set statusline true --scope project

Single-shell manual gate:

export GUILD_STATUSLINE=1

Without one of those Guild Stack gates, Claude Code may invoke the script, but the script exits quietly.

Output Modes

ModeTriggered whenOutput
OffGUILD_STATUSLINE is not 1no output
AGUILD_STATUSLINE=1, GUILD_RUN_ID set, and run-dir/counters.json existsphase, round, cap, loops, restarts
BGUILD_STATUSLINE=1, but GUILD_RUN_ID is unset or emptyphase: unknown
CGUILD_STATUSLINE=1 and GUILD_RUN_ID set, but run-dir/counters.json is missingphase: run-id (initialising)

Mode A is the steady-state output during a live run. Mode B means the status line is enabled but no run id reached the status-line process. Mode C is the transient state between run start and the first counter write.

Field Meanings

FieldSourceNotes
phaseGUILD_PHASE env varrendered verbatim when set; unknown when unset
roundrun-dir/counters.jsonlane round when GUILD_LANE_ID is set; otherwise orchestrator round
capGUILD_LOOP_CAP env vardefaults to 16
loopsGUILD_LOOPS env vardefaults to none
restartsrun-dir/counters.jsonper-lane restart count, or 0 when no lane is active

GUILD_RUN_ID is generated by the Guild Stack runner when a run starts. For a separate shell, point it at the active run after the run has started:

export GUILD_RUN_ID="$(cat .guild/runs/current-run-id)"
export GUILD_STATUSLINE=1

The script reads GUILD_RUN_ID from the environment only; it does not consult .guild/runs/current-run-id itself.

Quick Verification

unset GUILD_STATUSLINE
bash scripts/statusline-guild.sh </dev/null

Expected output: nothing.

export GUILD_STATUSLINE=1
unset GUILD_RUN_ID
bash scripts/statusline-guild.sh </dev/null

Expected output:

phase: unknown

The script is self-contained and does not require jq. JSON parsing for counters.json runs through an inline node -e block.

Troubleshooting

SymptomLikely causeFix
Status line is blankClaude Code is not invoking the script, the path is wrong, or GUILD_STATUSLINE is not 1Add the statusLine JSON block, verify the script path, and enable statusline.
phase: unknown while run fields show correctlyGUILD_PHASE is not setSet GUILD_PHASE=label if you need a phase label.
phase: unknown and no run fieldsGUILD_RUN_ID did not reach the status-line processSet it from .guild/runs/current-run-id after the run starts.
phase: run-id (initialising) never advancescounters.json has not been writtenCheck .guild/runs/run-id/logs/v1.4-events.jsonl for run errors.
Script errors in Claude CodePermission bit missingchmod +x scripts/statusline-guild.sh

Source Truth

  • docs/v2/config-surfaces.md - statusline is a closed boolean key with default false.
  • docs/v2/observability.md - /guild:status remains the lightweight status run surface.
  • docs/v2/architecture/modules/telemetry.md - trace and status/report context.