| Command | Description |
|---|---|
/gsd |
Step mode — execute one unit at a time, pause between each |
/gsd next |
Explicit step mode (same as /gsd) |
/gsd auto |
Autonomous mode — research, plan, execute, commit, repeat |
/gsd auto --resume-wedge <id> |
Resume the currently open liveness wedge; its originating guard must be clear before auto mode re-enters |
/gsd quick [--discuss] [--research] [--validate] [--full] <task> |
Execute a quick task with GSD guarantees; optionally add discussion, research, plan checking, and post-execution verification (--full enables all three stages) |
/gsd do <text> |
Route freeform text to the right GSD command |
/gsd stop |
Stop auto mode gracefully |
/gsd pause |
Pause auto-mode (preserves state, /gsd auto to resume) |
/gsd steer |
Hard-steer plan documents during execution |
/gsd discuss |
Discuss architecture and decisions (stop auto-mode first with /gsd stop) |
/gsd status |
Open the status dashboard |
/gsd widget |
Cycle dashboard widget: full / small / min / off |
/gsd notifications |
View, filter, and clear persistent notification history |
/gsd queue |
Queue and reorder future milestones (pending, queued, and legacy planned; safe during auto mode) |
/gsd capture |
Fire-and-forget thought capture (works during auto mode) |
/gsd triage |
Manually trigger triage of pending captures |
/gsd debug |
Create and inspect persistent /gsd debug sessions |
/gsd debug list |
List persisted debug sessions |
/gsd debug status <slug> |
Show status for one debug session slug |
/gsd debug continue <slug> |
Resume an existing debug session slug |
/gsd debug --diagnose |
Inspect malformed artifacts and session health (--diagnose [<slug> | <issue text>]) |
/gsd dispatch |
Dispatch a specific phase directly (research, plan, execute, complete, validate, reassess, uat, replan) |
/gsd verdict <pass|needs-attention|needs-remediation> |
Override an unadopted compatibility milestone's recorded validation verdict with an explicit rationale; adopted milestones must rerun canonical validation with current evidence |
/gsd uat-answer <accept|reject> --rationale "..." |
Answer an open subjective UAT question. Only this command records Human Acceptance; the agent has no tool for it. It records an answer only when you type it in the terminal UI: an RPC or headless session (gsd headless, the MCP gsd_execute tool, the web UI) can list the open questions but cannot answer. Run it with no arguments to list the open questions; add --question <id> when more than one is open |
/gsd history |
View execution history (supports --cost, --phase, --model filters) |
/gsd usage |
Show current LLM context-window usage and session token totals |
/gsd session-report |
Show session cost, tokens, and work summary (--json, --save) |
/gsd forensics |
Full-access GSD debugger — structured anomaly detection, unit traces, and LLM-guided root-cause analysis for auto-mode failures |
/gsd cleanup |
Clean up GSD state files and stale worktrees |
/gsd closeout |
Recover failed git closeout actions (status, retry, resolve) |
/gsd worktree (/gsd wt) |
Manage GSD worktrees from the TUI |
/gsd visualize |
Open workflow visualizer (progress, timeline, deps, metrics, health, agent, changes, knowledge, memories, captures, export) |
/gsd brief <mode> [topic] [--slides] |
Generate a self-contained visual HTML brief. Modes: diagram, plan, diff, recap, table, slides. |
/gsd report |
Generate HTML reports for all milestones and open the reports index in a browser |
/gsd report --html |
Generate self-contained HTML report for current or completed milestone |
/gsd report --html --all |
Generate retrospective reports for all milestones at once |
/gsd update |
Update GSD in-session; --models refreshes models and pricing without a restart |
/gsd upgrade |
Alias for /gsd update |
/gsd knowledge |
Add persistent project knowledge. Rules, patterns and lessons are stored as memories with a K/P/L id; KNOWLEDGE.md is rendered from the database after each capture and on rebuild. |
/gsd memory |
Query and forget project memories |
/gsd eval-review <sliceId> |
Audit a slice's AI evaluation strategy and write a scored <sliceId>-EVAL-REVIEW.md. Flags: --force overwrites; --show prints the existing audit. See eval-review. |
/gsd extract-learnings <MID> |
Extract structured Decisions, Lessons, Patterns, and Surprises from a completed milestone — writes <MID>-LEARNINGS.md audit trail, persists durable knowledge through the memory/decision stores, and renders each captured Pattern and Lesson into .gsd/KNOWLEDGE.md. Runs automatically at milestone completion. |
/gsd fast |
Toggle service tier for supported models (prioritized API routing) |
/gsd rate |
Rate last unit's model tier (over/ok/under) or reset the routing history — improves adaptive routing |
/gsd changelog |
Show categorized release notes |
/gsd logs |
Browse activity logs, debug logs, and metrics |
/gsd remote |
Control remote auto-mode |
/gsd help |
Categorized command reference with descriptions for all GSD subcommands |
/gsd discuss supports optional direct targets: /gsd discuss M014, /gsd discuss M014/S03, /gsd discuss --milestone M014, and /gsd discuss --slice M014/S03.
Quick-task right-sizing flags are composable. Use --discuss to surface design choices before planning, --research to investigate approaches first, and --validate to add plan checking and independent post-execution verification. Passing all three is equivalent to --full; passing none preserves the lightweight quick-task flow.
/gsd brief asks the agent to gather evidence and write a single responsive HTML artifact for visual review, planning, recap, or presentation. Usage:
/gsd brief <diagram|plan|diff|recap|table|slides> [topic] [--slides]
Modes:
| Mode | Use it for |
|---|---|
diagram |
System, architecture, flow, state, data, or process diagrams. If the first argument is not a known mode, GSD treats the whole request as a diagram topic. |
plan |
Visual implementation plans with scope, likely files, edge cases, risks, and tests. |
diff |
Visual reviews of current staged and unstaged repository changes. If no topic is supplied, it reviews the current repository changes. |
recap |
Context-switching project recaps. If no topic is supplied, it recaps the current project. |
table |
Dense comparisons, audits, matrices, and status reports as readable HTML tables. |
slides |
A concise visual deck. Passing --slides with another mode also requests slide-deck output. |
Artifacts are written under the GSD agent directory's diagrams/ folder with a descriptive kebab-case .html filename. The generated file is self-contained with embedded CSS and minimal JavaScript; it may use CDN libraries such as Mermaid for diagrams, but must keep useful written context if a CDN fails.
After writing the file, GSD attempts to open it in a browser using the local platform opener (open on macOS, xdg-open on Linux, or cmd /c start on Windows). If browser opening is unavailable or fails, the command reports the absolute file path.
| Command | Description |
|---|---|
/gsd prefs |
Model selection, timeouts, budget ceiling |
/gsd model |
Switch the active session model or open a picker |
/gsd mode |
Switch workflow mode (solo/team) with coordinated defaults for milestone IDs, git commit behavior, and documentation |
/gsd config |
(deprecated) Set tool API keys — use /gsd keys (tool keys) or /gsd setup (provider wizard) instead |
/gsd keys |
API key manager — list, add, remove, test, rotate, doctor |
/gsd doctor |
Runtime health checks with auto-fix — issues surface in real time across widget, visualizer, and HTML reports |
/gsd doctor resolve-evidence <evidence-id> --action=<discard|preserve|restore> --consent=<printed-consent> |
Resolve retained projection evidence using the exact ID and action-specific consent printed by /gsd doctor |
/gsd inspect |
Show SQLite DB diagnostics |
/gsd show-config |
Show effective configuration, including models, routing, and toggles |
/gsd init |
Project init wizard — detect, configure, bootstrap .gsd/; if .gsd/ already exists, opens an "Already Initialized" menu with Re-configure preferences, Suggest & install skills, or Cancel |
/gsd setup |
Global setup status and configuration |
/gsd onboarding |
Re-run the setup wizard (--resume, --reset, --step <name>) |
/gsd mcp |
Manage MCP servers (status, check, discover, test, enable, disable, import, delete, init) |
/gsd context |
Show a context breakdown chart for skills, injections, history, and MCP tool schema usage |
/gsd skill-health |
Skill lifecycle dashboard — usage stats, success rates, token trends, staleness warnings |
/gsd skill-health <name> |
Detailed view for a single skill |
/gsd skill-health --declining |
Show only skills flagged for declining performance |
/gsd skill-health --stale N |
Show skills unused for N+ days |
/gsd hooks |
Show configured post-unit and pre-dispatch hooks |
/gsd run-hook |
Manually trigger a specific hook |
/gsd migrate |
Preview the migration of a v1 .planning directory to .gsd format, then approve the exact hash shown with /gsd migrate --preview=<sha256> |
/gsd recover |
Preview an explicit legacy markdown import, then approve the exact hash shown with /gsd recover --preview=<sha256> |
/gsd recover <recoveryActionId> |
Resume one repaired Task recovery abort or remediation after supplying repair and verification evidence |
/gsd rebuild markdown |
Preserve externally edited modeled projections under .gsd/quarantine/projections/, then rebuild from the canonical database without importing markdown |
/gsd db bind |
Make this checkout the one the project database belongs to, after the bound checkout was moved or deleted; see Working in Teams |
/gsd db start-empty |
Start from an empty database on purpose, when GSD refuses a fresh clone with authority-missing and you do not want to import the tracked markdown with /gsd recover. The choice is stored in the database. No file is changed; see Working in Teams |
/gsd db adopt |
Preview the one-time lifecycle backfill for a database made by an older GSD: each milestone, slice and task row with no lifecycle row, and the rule that will adopt it. Unknown statuses are listed and block the run. Rows that are open work under a milestone or slice that is already completed are listed and will be adopted as cancelled. Rows already adopted as cancelled with no Waiver are counted, and so are completions that an import adopted and that have no stored unverified-legacy evidence marker yet. While the Restore Window of the last import is open, the markers wait: when they are the only pending work, the preview says so, and --apply writes nothing, so the import can still be restored. When rows with no lifecycle row or adopted cancellations with no Waiver are also pending, the preview states that --apply closes the Restore Window of the import. GSD runs this backfill by itself the first time it opens a database made by an older GSD, and then advances the Authority Epoch. It writes a verified backup beside the database first. Set the environment variable GSD_AUTHORITY_CUTOVER=0 to turn this off; the opt-out is kept for one release. That run changes nothing and lists the rows when a row has an unknown status, when a completion has no evidence, or when open work is under a completed or skipped milestone or slice. Use the command then: fix each unknown status, read the preview, and run --apply. The next open advances the Authority Epoch. |
/gsd db adopt --apply |
Write a verified backup beside the database, then adopt every such row in one operation. Skipped and deferred rows, and open rows under a completed parent, become cancelled with a Waiver; a row already adopted as cancelled with no Waiver gets one; a completion that an import adopted gets its unverified-legacy evidence marker and stays completed; while the Restore Window of the last import is open and the markers are the only pending work, nothing is written; with other pending work the operation runs and closes that Restore Window; a completion with no evidence becomes open work again, except under a completed parent, where it stays completed as unverified legacy and is listed. Roll back with /gsd db restore-backup; a backup taken before the Authority Epoch advanced is refused |
/gsd language <language|off|clear> |
Set or clear the global response language |
Use /gsd run-hook <hook-name> <unit-type> <unit-id> to trigger a configured hook. Run /gsd run-hook without arguments for the supported unit types. The ID must match the selected type's scope: for example, review complete-milestone M001, review plan-slice M001/S01, or review execute-task M001/S01/T01 after /gsd run-hook. Unique milestone IDs such as M001-abc123 also work, including within slice and task IDs. Unsupported unit types are rejected with the supported-type list; an invalid ID reports the expected format for its type before the hook is triggered.
The two /gsd recover forms serve different recovery domains. Use the no-argument command (and its --preview, --application, and related flags) only for the evidence-bound legacy markdown/database import flow. When auto mode reports a terminal Task recovery abort or a settled Task with a current remediate Recovery Action, repair the underlying defect and run /gsd recover <recoveryActionId>. GSD checks that the action is still eligible, prompts for a nonblank repair summary and concrete verification evidence, and authorizes exactly one fresh lineage-linked retry; it does not run that retry itself, so rerun /gsd auto after the command succeeds. Stale actions, duplicate authorizations, open blockers, and actions superseded by later Attempts remain rejected.
| Command | Description |
|---|---|
/gsd new-project [--deep] |
Bootstrap a new project; --deep enables staged project-level discovery |
/gsd new-milestone [--deep] |
Create a new milestone; --deep opts the project into deep planning mode |
/gsd skip |
Cancel a slice or task with a Waiver so auto-mode does not dispatch it |
/gsd undo |
Show the exact effect of an undo of the last completed unit recorded in the database; /gsd undo --force then reopens that task, slice, or milestone and stages a revert of its git commits. A unit of any other type is refused |
/gsd undo-task |
Reopen a terminal task through canonical DB recovery authority, then refresh projections |
/gsd reset-slice |
Reopen the full terminal slice and every terminal task in one guarded database operation, preserve prior execution history, then refresh readable status |
/gsd park |
Park a milestone — skip without deleting |
/gsd unpark |
Reactivate a parked milestone |
/gsd discard <milestone-id> |
Confirm and discard one milestone: it is cancelled in the database (kept as a tombstone) and its files are removed |
/gsd rethink |
Conversational project reorganization — reorder, park, discard, or add milestones |
| Discard milestone | Available via /gsd wizard → "Milestone actions" → "Discard"; completed or closed milestones are refused |
Milestone and slice titles created during planning must not contain forward slash (/), en dash, or em dash characters. GSD reserves those characters as state-document delimiters, so plan-milestone rejects titles that include them.
Slice completion succeeds only after every Task has durable proof. Skip preserves completed work, safely stops unfinished work, and records the decision to treat the skipped Slice as a satisfied dependency. Reset revokes that decision, is intentionally all-or-nothing, and keeps prior Attempts, verification, and dispatch history. If later Slices have already started or completed, reset those downstream Slices first.
If GSD says the readable status update is pending repair, the database change
succeeded but a SUMMARY, UAT, PLAN, ROADMAP, or STATE file could not be
refreshed. Repair the filesystem obstruction, then run /gsd doctor fix or
/gsd rebuild markdown; do not edit Markdown to change status. Hosts that
preserve the original private invocation identity may instead perform an exact
retry. Adopted Milestone validation, completion, and full-redo reopen use the
same atomic receipt contract. An exact retry can repair projection delivery
only while its operation still owns the current lifecycle head; a historical
receipt reports duplicate and superseded and cannot overwrite newer status.
| Command | Description |
|---|---|
/gsd parallel start |
Analyze eligibility, confirm, and start workers |
/gsd parallel status |
Show all workers with state, progress, and cost |
/gsd parallel stop [MID] |
Stop all workers or a specific milestone's worker |
/gsd parallel pause [MID] |
Pause all workers or a specific one |
/gsd parallel resume [MID] |
Resume paused workers |
/gsd parallel merge [MID] |
Merge completed milestones back to main |
See Parallel Orchestration for full documentation.
| Command | Description |
|---|---|
/gsd ship |
Create a PR from milestone artifacts and open it for review (--dry-run, --draft, --base, --force) |
/gsd pr-branch |
Create a clean PR branch filtering .gsd/ commits (--dry-run, --name) |
/gsd backlog |
Manage backlog items (add, promote, remove, list) |
/gsd add-tests |
Generate tests for completed slices |
/gsd scan |
Run a rapid codebase assessment (--focus tech, arch, quality, concerns, tech+arch) |
/gsd codebase |
Generate, refresh, and inspect the .gsd/CODEBASE.md cache (generate, update, stats); parent workspaces include declared child repositories under repo-labeled sections |
These commands are native GSD workflows surfaced in /gsd help full. They dispatch purpose-built prompts against the milestone, slice, and .gsd/ model instead of acting as aliases.
| Command | Description |
|---|---|
/gsd explore [topic] |
Socratic ideation before committing an idea to backlog, knowledge, research, spike, sketch, or a milestone |
/gsd spike [idea] |
Focused throwaway experiment; supports --quick, --text, and frontier mode |
/gsd sketch [idea] |
UI/design exploration with throwaway HTML mockups; supports --quick, --text, and frontier mode |
/gsd map-codebase |
Generate structured codebase reference docs under .gsd/codebase/; supports --paths and --focus |
/gsd docs-update |
Generate, update, or verify project docs against live code; supports --force and --verify-only |
/gsd graphify |
Build, query, inspect, or diff a lightweight knowledge graph under .gsd/knowledge/ |
/gsd stats |
Display project statistics, milestones, slices, git metrics, and timeline |
/gsd progress |
Summarize recent work and next steps; --next dispatches /gsd next, and --do "..." routes through /gsd do |
/gsd health |
Check .gsd/ integrity; supports --repair and --context |
/gsd surface |
Manage which skills and extensions are surfaced in the session |
/gsd code-review |
Review changed source diff-first for bugs, security, and quality; supports --depth, --files, and --fix |
/gsd review |
Peer-review recent work across reviewer perspectives; external reviewer flags are simulated in-prompt when unavailable |
/gsd audit-milestone |
Verify a milestone met its definition of done |
/gsd audit-uat |
Audit outstanding UAT/verification items; supports --verify |
/gsd audit-fix |
Classify and remediate audit findings; supports --source, --severity, --max, and --dry-run |
/gsd ui-review |
Run a retroactive six-pillar visual audit for frontend work |
/gsd secure-phase |
Verify threat mitigations for completed work |
/gsd validate-phase |
Audit and fill validation or test coverage gaps |
/gsd verify-work |
Run conversational UAT of built features |
/gsd plan-review-convergence |
Iterate a plan through review cycles until concerns resolve |
/gsd discuss-phase |
Gather milestone or slice context through adaptive questioning |
/gsd plan-phase |
Create a detailed slice plan with a verification loop |
/gsd execute-phase |
Execute slice tasks with wave-based parallelization |
/gsd spec-phase |
Clarify what a milestone delivers, with ambiguity scoring |
/gsd mvp-phase |
Plan a milestone as a vertical MVP slice |
/gsd ui-phase |
Produce a UI design contract (UI-SPEC) for frontend milestones |
/gsd ai-integration-phase |
Produce an AI design contract (AI-SPEC) for AI milestones |
/gsd ultraplan-phase |
Run an extended-reasoning planning pass, review, then import |
/gsd autonomous |
Continuously run the remaining lifecycle work with explicit phase ceremony |
/gsd pause-work |
Create a context handoff when pausing mid-stream |
/gsd resume-work |
Resume work with full context restoration |
/gsd manager |
Open a command-center workflow for multiple milestones |
/gsd phase |
Manage milestone queue ordering; structural actions route to existing GSD commands |
/gsd thread |
Manage persistent context threads for cross-session work |
/gsd workstreams |
Manage parallel workstreams through /gsd parallel |
/gsd workspace |
Manage isolated workspaces through /gsd worktree |
/gsd milestone-summary |
Generate a project or milestone summary for onboarding |
/gsd review-backlog |
Review and promote backlog items to milestones |
/gsd inbox |
Triage GitHub issues and PRs against project conventions |
/gsd import |
Ingest external plans with conflict detection |
/gsd ingest-docs |
Bootstrap or merge .gsd/ state from existing ADRs, PRDs, specs, or docs |
/gsd profile-user |
Generate and persist a developer behavior profile |
/gsd settings |
Configure workflow toggles and model profile |
/gsd ns-context, /gsd ns-ideate, /gsd ns-manage, /gsd ns-project, /gsd ns-review, /gsd ns-workflow |
Namespace grouping commands from older command sets; each redirects to /gsd help because GSD uses a flat command list |
| Command | Description |
|---|---|
/gsd start |
Start a workflow template (bugfix, spike, feature, hotfix, refactor, security-audit, dep-upgrade, full-project) |
/gsd start resume |
Resume an in-progress workflow |
/gsd templates |
List available workflow templates |
/gsd templates info <name> |
Show detailed template info |
The unified plugin system. Every workflow — bundled, user-authored, or
remotely installed — is discoverable via /gsd workflow <name> and declares
one of four execution modes:
| Mode | What it does |
|---|---|
oneshot |
Prompt-only, no state, no branch. For reviews, triage, changelog generation. |
yaml-step |
Full engine with step rows in the database, iterate, and shell-verify. For fan-out batch work. |
markdown-phase |
Multi-phase with STATE.json + phase-approval gates. For release, performance audit. |
auto-milestone |
Hooks into the full /gsd auto pipeline. Reserved for full-project. |
.gsd/workflows/<name>.{yaml,md}— project-local, checked into the repo.~/.gsd/workflows/<name>.{yaml,md}— global, private to the machine.- Bundled — ships with GSD (see the full list with
/gsd workflow).
Legacy .gsd/workflow-defs/ YAML definitions are still picked up for
backwards compatibility.
| Command | Description |
|---|---|
/gsd workflow |
List all discoverable plugins, grouped by mode |
/gsd workflow <name> [args] |
Run a plugin directly (resolved via precedence chain) |
/gsd workflow info <name> |
Show plugin metadata — source, mode, phases, path |
/gsd workflow new |
Create a new workflow definition (via the create-workflow skill) |
/gsd workflow install <source> |
Install a plugin from https://..., gist:<id>, or gh:owner/repo/path[@ref] |
/gsd workflow uninstall <name> |
Remove an installed plugin and its provenance record |
/gsd workflow run <name> [k=v] |
Explicit YAML run form (same as /gsd workflow <name> for yaml-step plugins) |
/gsd workflow list |
List YAML workflow runs (history) |
/gsd workflow validate <name> |
Validate a YAML definition |
/gsd workflow pause |
Pause custom workflow auto-mode |
/gsd workflow resume |
Resume paused custom workflow auto-mode |
/gsd workflow resume <name>/<timestamp> |
Resume a YAML run by the name and timestamp that /gsd workflow list shows, also after a crash |
/gsd workflow approve <name>/<timestamp> <step> |
Approve a step that paused for your review (a human-review or prompt-verify step), then resume the run |
A YAML run is stored in the project database. DEFINITION.yaml, GRAPH.yaml
and PARAMS.json in .gsd/workflow-runs/<name>/<timestamp>/ are renders of
it: GSD writes them again after each step and does not read your edits. A run
directory from an older release has no database rows: /gsd workflow list
shows it as not imported, and GSD imports it before it runs the next step.
A step with a human-review or prompt-verify policy pauses the run after it
runs. Review its output, approve it with
/gsd workflow approve <name>/<timestamp> <step>, and resume the run. The
approval is stored with the run; the step does not run again. A step that
failed a check cannot be approved: resume the run and the step runs again.
- Phased (
markdown-phase):bugfix,small-feature,spike,hotfix,refactor,security-audit,dep-upgrade,release,api-breaking-change,performance-audit,observability-setup,ci-bootstrap. - Oneshot:
pr-review,changelog-gen,issue-triage,pr-triage,onboarding-check,dead-code,accessibility-audit. - YAML engine (
yaml-step):test-backfill,docs-sync,rename-symbol,env-audit. - Auto-milestone:
full-project(reached via/gsd start full-projector/gsd auto).
Run /gsd workflow new <name> to scaffold via the create-workflow skill.
Plugins are plain YAML (.yaml) or markdown (.md) files. See
src/resources/extensions/gsd/workflow-templates/ for bundled examples.
| Command | Description |
|---|---|
/gsd extensions list |
List all extensions and their status. Installed entries show [user] or [project] plus the install source; project entries are limited to the current project. |
/gsd extensions enable <id> |
Enable a disabled extension |
/gsd extensions disable <id> |
Disable an extension |
/gsd extensions info <id> |
Show extension details |
/gsd extensions install <spec> |
Install a user extension. <spec> is an npm package, a git URL, or a local path. Restart GSD to activate. |
/gsd extensions uninstall <id> |
Remove a user or current-project extension. Package-managed entries remove the underlying shell package; direct installs warn if other extensions depend on them. |
/gsd extensions update [id] |
Update a single user or current-project npm extension to its latest version, or all applicable entries when id is omitted. Package-managed entries update through the shell package manager. Git/local installs are skipped — reinstall to update. |
/gsd extensions validate <path> |
Validate an extension package directory against the manifest schema before publishing or installing. |
Install sources are auto-detected: starts with http(s):// or ends with .git → git clone; contains / or . and exists on disk → local copy; otherwise → npm pack. Installed extensions land in ~/.gsd/extensions/<id>/ and the registry records the source so update can re-fetch.
Shell package commands use the same extension registry. A successful gsd install <source> registers extension manifests from that package as user entries; adding --local registers them as project entries for the current project. gsd remove unregisters the matching entries from the same scope. This keeps gsd list and /gsd extensions list in sync regardless of which install route you use.
| Command | Description |
|---|---|
/gsd cmux status |
Show cmux detection, prefs, and capabilities |
/gsd cmux on |
Enable cmux integration |
/gsd cmux off |
Disable cmux integration |
/gsd cmux notifications on/off |
Toggle cmux desktop notifications |
/gsd cmux sidebar on/off |
Toggle cmux sidebar metadata |
/gsd cmux splits on/off |
Toggle cmux visual subagent splits |
| Command | Description |
|---|---|
/subagent |
List available user and project subagents. Run records, status checks, and follow-up resume are handled through the subagent tool; see Subagents. |
| Command | Description |
|---|---|
/github-sync bootstrap |
Initial setup — creates GitHub Milestones, Issues, and draft PRs from current .gsd/ state |
/github-sync status |
Show sync mapping counts (milestones, slices, tasks) |
Enable with github.enabled: true in preferences. Requires gh CLI installed and authenticated. Sync mapping is persisted in .gsd/github-sync.json.
| Command | Description |
|---|---|
/worktree (/wt) |
Git worktree lifecycle — create, switch, merge, remove |
Use /gsd worktree from an active TUI session to inspect and clean up GSD-managed worktrees without leaving the conversation. /gsd wt is an alias.
| Command | Description |
|---|---|
/gsd worktree list |
Show each worktree, branch, path, clean/unmerged/uncommitted status, diff stats, and commit count. Alias: /gsd worktree ls. |
/gsd worktree merge [name] |
Merge a worktree into the detected main branch, then remove the worktree and its branch. The name is optional only when exactly one worktree exists. |
/gsd worktree clean |
Remove only merged or empty worktrees. Worktrees with unmerged diffs or uncommitted changes are kept. |
/gsd worktree remove <name> [--force] |
Remove a named worktree and delete its branch. Refuses unmerged or uncommitted work unless --force is supplied. Alias: /gsd worktree rm. |
Safety behavior:
mergeauto-commits dirty worktree changes before merging when possible.mergerefuses to continue if the project root is not on the detected main branch; check out the main branch and rerun it.cleannever deletes worktrees with pending file changes.removerequires--forceto discard unmerged or uncommitted work.
The following commands are sent directly in your Telegram chat to a configured GSD bot — they are not GSD CLI commands. Telegram command polling runs every ~5 seconds while auto-mode is active. Each response is prefixed with the project name (e.g., 📁 MyProject).
| Command | Description |
|---|---|
/status |
Current milestone, active unit, and session cost |
/progress |
Roadmap overview — completed and open milestones |
/budget |
Token usage and cost for the current session |
/pause |
Pause auto-mode after the current unit finishes |
/resume |
Clear a pause directive and continue auto-mode |
/log [n] |
Last n activity log entries (default: 5) |
/help |
List all available Telegram commands |
Requirements: Telegram must be configured as your remote channel (remote_questions.channel: telegram). Commands are only processed while auto-mode is running. See Remote Questions — Telegram Commands for setup and details.
| Command | Description |
|---|---|
/clear |
Start a new session (alias for /new) |
/exit |
Graceful shutdown — saves session state before exiting |
/kill |
Kill GSD process immediately |
/model |
Switch the active model |
/login |
Log in to an LLM provider |
/thinking |
Toggle thinking level during sessions |
/voice |
Toggle real-time speech-to-text (macOS, Linux) |
| Shortcut | Action |
|---|---|
Ctrl+Alt+G |
Toggle dashboard overlay |
Ctrl+Alt+V |
Toggle voice transcription |
Ctrl+Alt+B |
Show background shell processes |
Ctrl+V / Alt+V |
Paste image from clipboard (screenshot → vision input) |
Escape |
Pause auto mode (preserves conversation) |
Note: In terminals without Kitty keyboard protocol support (macOS Terminal.app, JetBrains IDEs), slash-command fallbacks are shown instead of
Ctrl+Altshortcuts.Tip: If
Ctrl+Vis intercepted by your terminal (e.g. Warp), useAlt+Vinstead for clipboard image paste.
scripts/claude-code-send-selection.sh is an optional Automator Quick Action shim for Claude Code.app. It reads selected text from stdin (or the clipboard as a fallback), pastes it into Claude Code, submits it, and restores the previous clipboard. To use it, create an Automator Quick Action with Run Shell Script, point it at the script path, and bind your preferred macOS keyboard shortcut.
| Flag | Description |
|---|---|
gsd |
Start a new interactive session |
gsd --continue (-c) |
Resume the most recent session for the current directory |
gsd --session <path|id> |
Resume a specific session file or session ID |
gsd --session-dir <dir> |
Store and look up sessions in a custom directory |
gsd --model <id> |
Override the default model for this session |
gsd --thinking <level> |
Override the thinking level for this session. Valid levels: off, minimal, low, medium, high, xhigh, max. |
gsd --print "msg" (-p) |
Single-shot prompt mode (no TUI) |
gsd --mode <text|json|rpc|mcp> |
Output mode for non-interactive use |
gsd --list-models [search] |
List available models and exit |
gsd --web [path] |
Start browser-based web interface (optional project path) |
gsd --worktree (-w) [name] |
Start session in a git worktree (auto-generates name if omitted) |
gsd --no-session |
Disable session persistence |
gsd --extension <path> |
Load an additional extension (can be repeated) |
gsd --append-system-prompt <text> |
Append text to the system prompt |
gsd --tools <list> |
Comma-separated list of tools to enable |
gsd --version (-v) |
Print version and exit |
gsd --help (-h) |
Print help and exit |
gsd sessions |
Interactive session picker — list all saved sessions for the current directory and choose one to resume |
gsd config |
Set up global API keys for search and docs tools (saved to ~/.gsd/agent/auth.json, applies to all projects). See Global API Keys. |
gsd update |
Update GSD to the latest version (use gsd update browser to update the managed browser, or gsd update --models to refresh the model catalog) |
gsd install <source> [-l|--local] |
Install a package from npm, git, a URL, or a local path (e.g. gsd install npm:@foo/bar). The default scope is user-wide; --local installs into the current project and registers its extensions as project entries. |
gsd remove <source> [-l|--local] |
Remove a package from the matching user or project scope and unregister its extensions. Use --local for a project-local install. |
gsd list |
List installed user/project packages, followed by separate user/project extension sections. |
gsd graph <subcommand> |
Build, query, status, or diff the project knowledge graph. The build reads the workflow database, and the .gsd/ artifacts only when the project has no database |
gsd quick <task> |
Execute a quick task without a TUI (alias for gsd headless quick <task>) |
gsd headless --json |
Structured JSONL event stream to stdout for scripting, CI, and troubleshooting (alias: --output-format stream-json) |
gsd headless new-milestone |
Create a new milestone from a context file (headless — no TUI required) |
gsd headless runs /gsd commands without a TUI — designed for CI, cron jobs, and scripted automation. It spawns a child process in RPC mode, auto-responds to interactive prompts, detects completion, and exits with meaningful exit codes.
# Run auto mode (default)
gsd headless
# Run a single unit
gsd headless next
# Execute a quick task and return task, branch, artifact, commit, and exit details
gsd quick --output-format json "fix the login button on mobile"
# Instant JSON snapshot — no LLM, ~50ms
gsd headless query
# With timeout for CI
gsd headless --timeout 600000 auto
# Auto shorthand with session-level model and thinking overrides
gsd auto --model claude-code/sonnet --thinking medium
# Force a specific phase
gsd headless dispatch plan
# Create a new milestone from a context file and start auto mode
gsd headless new-milestone --context brief.md --auto
# Create a milestone from inline text
gsd headless new-milestone --context-text "Build a REST API with auth"
# Pipe context from stdin
echo "Build a CLI tool" | gsd headless new-milestone --context -| Flag | Description |
|---|---|
--timeout N |
Overall timeout in milliseconds. The default is 300000 (5 min), except auto, whose overall timeout is disabled unless this flag is set. Use 0 to disable explicitly. |
--max-restarts N |
Auto-restart on crash with exponential backoff (default: 3). Set 0 to disable. Deterministic no-work failures are not restart-eligible. |
--json |
Stream all events as JSONL to stdout |
--model ID |
Override the model for the headless session |
--thinking LEVEL |
Override the thinking level for the headless session. Valid levels: off, minimal, low, medium, high, xhigh, max. |
--context <file> |
Context file for new-milestone (use - for stdin) |
--context-text <text> |
Inline context text for new-milestone |
--auto |
Chain into auto-mode after milestone creation |
Exit codes: 0 = complete, 1 = error or timeout, 10 = blocked, 11 = cancelled.
With --json or --output-format stream-json, the event stream ends with a
headless_result object. Its status and exitCode are the authoritative
terminal result for automation; human-readable output is diagnostic only.
Headless can return status: "no-work-deterministic" for repeatable no-progress
tails (for example select → input → cancelled). This status exits with code 1
and suppresses automatic restart loops.
Any /gsd subcommand works as a positional argument — gsd headless status, gsd headless doctor, gsd headless dispatch execute, etc.
Deletes one or more DB-only orphan milestone reservations without starting an RPC session or running projection reconciliation. The mandatory --orphan-only guard preflights the complete set and refuses if any target has a lifecycle row, hierarchy or artifact rows, planning content, a disk projection, queue/dependency references, a worktree or milestone branch, or an active lease/dispatch/worker. No target is deleted unless every target passes; successful deletion occurs in one transaction.
A milestone that gsd_milestone_generate_id or a saved PROJECT Milestone Sequence registers gets a lifecycle row at registration. Lifecycle rows are durable history, so this command refuses such a milestone. Use /gsd discard <milestone-id> for it: the milestone is cancelled and stays in the database as a tombstone. This command deletes only reservations that have no lifecycle row, which are rows registered by an earlier version.
gsd headless discard-milestone M015 --orphan-only
gsd headless discard-milestone M015 M016 --orphan-onlyThe command always writes one structured JSON object with before and after snapshots. Exit 0 means every requested row was removed and the canonical post-delete query found none; exit 1 is a refusal or error.
Non-TTY equivalent of the no-argument /gsd recover database-import preview and evidence-bound approval flow. It does not implement the interactive /gsd recover <recoveryActionId> Task-recovery resume form. It fingerprints legacy markdown and the current database, creates and verifies a retained backup only after the exact --preview=<sha256> approval, applies the unchanged preview through one atomic Import Application, and prints the recommended recovery action plus its exact evidence. Existing database rows absent from markdown are preserved. Designed for CI, cron, and any environment where the interactive database recovery prompt cannot run.
gsd headless recoverThe first call prints the sealed Import Preview and exits without applying the import. Review that output, then rerun with the exact --preview=<preview-hash> value it prints. That approved run performs the Import Application and assessment. If the Preview has an item that needs a decision, the run exits 1 and applies nothing; see Migration from v1 for the --choice options that resolve it.
If assessment recommends destructive restore, rerun with the printed --application=<operation-id> --restore --consent=proceed:destructive-database-restore:<evidence-hash> values. Restore is permanently unavailable after any later canonical write or Authority Epoch cutover; follow the printed --application=<operation-id> --forward-repair route instead. When Forward Repair reports genuine overlap, supply one printed evidence-bound --choice for each target.
Exit codes key on the assessment decision: restore-consent-required, forward-repair-required, and already-restored exit 0 (the printed next step is expected follow-up input, not a failure). A Forward Repair that still requires overlap choices exits 1. Every other decision — refused, transaction-rollback-only, or temporarily-unavailable — fails closed: it exits non-zero and prints no gsd-recover: recovered marker, as do setup and action errors. Pair with gsd headless query afterwards to inspect canonical state.
Returns a single JSON object with the full project snapshot — no LLM session, no RPC child, instant response (~50ms). This is the recommended way for orchestrators and scripts to inspect GSD state.
gsd headless query | jq '.state.phase'
# "executing"
gsd headless query | jq '.next'
# {"action":"dispatch","unitType":"execute-task","unitId":"M001/S01/T03"}
gsd headless query | jq '.cost.total'
# 4.25Output schema:
{
"state": {
"phase": "executing",
"activeMilestone": { "id": "M001", "title": "..." },
"activeSlice": { "id": "S01", "title": "..." },
"activeTask": { "id": "T01", "title": "..." },
"registry": [{ "id": "M001", "status": "active" }, ...],
"progress": { "milestones": { "done": 0, "total": 2 }, "slices": { "done": 1, "total": 3 } },
"blockers": []
},
"next": {
"action": "dispatch",
"unitType": "execute-task",
"unitId": "M001/S01/T01"
},
"cost": {
"workers": [{ "milestoneId": "M001", "cost": 1.50, "state": "running", ... }],
"total": 1.50
}
}gsd --mode mcp runs GSD as a Model Context Protocol server over stdin/stdout. This exposes all GSD tools (read, write, edit, bash, etc.) to external AI clients — Claude Desktop, VS Code Copilot, and any MCP-compatible host.
# Start GSD as an MCP server
gsd --mode mcpThe server registers all tools from the agent session and maps MCP tools/list and tools/call requests to GSD tool definitions. It runs until the transport closes.
MCP mode also exposes the GSD workflow adapter tools used by headless runtimes:
- Session control tools:
gsd_execute,gsd_status,gsd_result,gsd_cancel,gsd_resolve_blocker - Project state and read-only tools:
gsd_query,gsd_progress,gsd_roadmap,gsd_history,gsd_doctor,gsd_captures,gsd_knowledge,gsd_graph - Interactive form tool:
ask_user_questions
For an auto-mode run, call gsd_execute first with an absolute projectDir. It returns a sessionId; poll gsd_status with that sessionId until the run finishes, then call gsd_result for accumulated output or gsd_cancel to stop it. If a client loses the sessionId, gsd_status can fall back to projectDir, or omit both fields only when this MCP server tracks exactly one session. Read-only project tools do not require an active session. With the GSD runtime bridge available, gsd_progress reads the project-root database and may run pending migrations and synchronize milestone queue order, matching gsd headless status. It uses the STATE.md projection only when the database is missing or cannot be opened; failures after a successful open are returned as errors. Without the bridge, the standalone MCP package keeps its projection-reader behavior. gsd_query, gsd_roadmap, gsd_doctor, gsd_captures, gsd_knowledge, gsd_history and the gsd_graph build follow the same database-first rule, and a result from the projection fallback says so in readMetadata. The graph build still reads LEARNINGS files for learning nodes.
The integration CLI commands gsd read progress --json --project <path> and gsd read roadmap --json --project <path> follow the same database-first and projection-fallback contract as gsd_progress and gsd_roadmap.
/gsd update checks npm for a newer version of GSD and installs it without leaving the session.
When the claude-code provider is configured, update may also warn if the local Claude Code Runtime is below the GSD release's validated floor.
/gsd update
# Current version: 1.2.0
# Checking npm registry...
# Updated to 1.3.0. Restart GSD to use the new version.If already up to date, it reports so and takes no action.
Use /gsd update --models to fetch the published all-provider model catalog, atomically replace ~/.gsd/agent/models-catalog.json, and reload the model registry in the current session. New models and pricing become available without an npm upgrade or restart. The command does not require provider authentication, and /gsd upgrade --models is an alias. See Updating the Model Catalog for validation, precedence, and failure behavior.
/gsd report generates HTML reports for all milestones and opens the reports index in a browser. /gsd export remains available as an alias.
# Generate all missing milestone reports and open the reports index
/gsd report
# Generate HTML report for the active milestone
/gsd report --html
# Generate retrospective reports for ALL milestones at once
/gsd report --html --allReports are saved to .gsd/reports/ with a browseable index.html that links to all generated snapshots. Each report includes the active memory feed in its Knowledge section when memory rows are available.