Ferment: Reference

This page is the complete lookup reference for Ferment — Kimchi's autonomous project mode. For an introduction to what Ferment is and how it works, see Ferment. For a hands-on walkthrough, see Ferment: Quickstart.

Commands

All Ferment commands are available from the Kimchi prompt during a harness session.

CommandDescription
/fermentOpen the interactive picker — create a new ferment or switch to an existing one
/ferment new "Name"Create a new ferment with the given name
/ferment listList all ferments
/ferment switch <id>Switch the active ferment by ID prefix or name
/ferment delete <id>Delete a ferment permanently
/ferment abandonAbandon the active ferment — terminal, cannot be resumed
/ferment revise <field>Revise a scoping field (e.g. goal, constraints)
/ferment one-shot "task"Create and auto-execute a single-task ferment with no interactive prompts
/ferment progressToggle the phase/step navigator overlay with grades and actions
/ferment manualSet manual continuation policy — ask before advancing to the next phase
/ferment autoSet automated continuation policy — advance through phases autonomously
/ferment pausePause the active ferment lifecycle
/ferment resumeResume the active ferment lifecycle
/ferment exitLeave Ferment mode without deleting the ferment

Continuation policies

PolicyBehaviour
ManualWork inside the current phase continues autonomously. The agent asks before moving to the next phase.
AutomatedThe agent keeps going until the ferment is complete, blocked, paused, or needs user input.

Switch policies at any time with /ferment manual or /ferment auto. The active policy is independent of pause/resume — pausing halts the lifecycle regardless of policy, and resuming continues with whichever policy is set.

/ferment exit clears the active ferment from the current session. If the ferment was planned or running, exit pauses it before detaching; drafts stay drafts, paused ferments stay paused, and completed or abandoned ferments are only detached. Exit does not change the manual/automated continuation policy. To resume the ferment later, select it from /ferment list or /ferment switch.

Lifecycle states

Ferment

StatusDescriptionTransitions to
draftCreated, scoping in progressplanned, abandoned
plannedScoping confirmed, phases ready to executerunning, paused, complete, abandoned
runningAt least one phase is activeplanned (no active phases remain), paused, complete, abandoned
pausedLifecycle halted — ferment tools are blocked until resumerunning (active phase exists), planned (no active phase), abandoned
completeExplicitly finalised after all phases are terminal
abandonedPermanently stopped

Phase

StatusDescriptionTransitions to
plannedNot yet startedactive, skipped
activeCurrently executingcompleted, skipped, failed
completedAll steps terminal, phase graded
skippedBypassed — counts as terminal
failedObjective not met — can be retried (active) or bypassed (skipped)active, skipped

Step

StatusDescriptionTransitions to
pendingNot yet startedrunning, skipped, failed
runningAssigned to a subagent workerdone, verified, skipped, failed
doneCompleted, no verification command set
verifiedCompleted and verification command passed (exit 0)
skippedBypassed — counts as terminal
failedObjective not met — can be retried (running) or bypassed (skipped)running, skipped

Grading

An autonomous judge evaluates every completed step and phase and assigns a letter grade:

GradeMeaning
AExcellent — objective clearly met
BGood — minor gaps
CAcceptable — significant gaps
DPoor — objective barely met
FFailed — objective not met

Grades appear in the dashboard widget and /ferment progress overlay.

Stuck-loop protection

If the same step is started three or more times without a completion, the harness blocks further starts and surfaces a recovery prompt:

⚠ Stuck loop detected: step 2 "Implement collision detection" has been started
  3 times without completing. Should we retry with a revised approach, skip
  this step, or pause the ferment?

The block clears when the step is completed or skipped.

Permissions

Ferment operates at the --yolo permissions level — the agent and all subagent workers read files, write files, and execute shell commands without prompting for approval. Permissions are elevated as soon as you approve ferment creation (from the draft state onward), so scoping and execution proceed without interruption. You do not need to pass --yolo yourself. When the ferment completes or is abandoned, permissions return to the harness default.

The agent can also offer to start a ferment on your behalf when it detects substantive work. In that case, it asks a yes/no question first; permissions are not elevated until you accept. In --yolo mode, the agent skips the question and starts the ferment directly.

Environment variables

VariableDescription
KIMCHI_ACTIVE_FERMENTSet to a ferment ID to resume that ferment on session start. Used for headless execution.
KIMCHI_SUBAGENTSet to 1 on worker child processes. Skips session-start rehydration to prevent re-entrancy. Not user-facing.

Headless usage

Ferment works without a TUI — useful for CI, scripts, and background runs.

One-shot task

/ferment one-shot "Add OpenAPI spec export to the REST API"

Creates a ferment, scopes it automatically, and begins execution without interactive input.

Headless session

Run Kimchi in headless mode with a pre-existing ferment:

KIMCHI_ACTIVE_FERMENT=<ferment-id> kimchi --headless

The session resumes the ferment, executes the next action, and continues until the ferment completes, pauses, or encounters an error. State is written to disk before exit so the next invocation can continue.

State file

Each ferment is stored as a single JSON file:

.kimchi/ferments/<uuid>.json

This file is the authoritative source of truth. You can inspect it directly, back it up, or copy it between machines. The schema is stable across harness versions.

📘

The state file contains everything: scoping answers, phase/step definitions and statuses, grades, decisions, memories, and timestamps. No external database or service is involved.

Related resources