persistent objectives with an explicit lifecycle
Standing goals#
/goal <objective> records a bounded objective in the session and keeps it in the model's instructions on every turn until it is completed, blocked, replaced, or cleared. It survives /resume.
/goal— inspect the full objective and status./goal complete— retain the objective as an auditable completed record./goal blocked— stop automatic progress while an external blocker exists./goal resume— reactivate a completed or blocked goal./goal clear— remove it.
The model can use the visible update_goal tool only for genuine whole-goal completion or a real blocker. Ending one turn or finishing one milestone is not goal completion.
Autonomous gate#
--autonomous-gate "<cmd>" bounds an autonomous run by a real check command: the agent may not end a turn until that command exits 0. When the model tries to stop and the gate fails, DGC feeds the command's output back and keeps working; when it exits 0, the stop is allowed. Bounded by --autonomous-max-turns (default 30) failed attempts, so a persistently red gate can never loop forever. Unset (the default) leaves turn completion unchanged. e.g. --autonomous-gate "npm run check".
Set it live without restarting: /autonomous-gate "npm run check" in the classic or full-screen TUI (/autonomous-gate off clears it, no argument reports the current gate and retry bound). The gate command and its max-retry bound are also editable in the TUI settings screen (Behaviour). In the VS Code extension, set dgc.autonomousGate and dgc.autonomousMaxTurns in Settings.