GSD Configuration Reference
Full configuration schema, workflow toggles, model profiles, and git branching options. For feature context, see Feature Reference.
Configuration File
GSD stores project settings in .planning/config.json. Created during /gsd:new-project, updated via /gsd:settings.
Full Schema
Core Settings
| Setting |
Type |
Options |
Default |
Description |
mode |
enum |
interactive, yolo |
interactive |
yolo auto-approves decisions; interactive confirms at each step |
granularity |
enum |
coarse, standard, fine |
standard |
Controls phase count: coarse (3-5), standard (5-8), fine (8-12) |
model_profile |
enum |
quality, balanced, budget, inherit |
balanced |
Model tier for each agent (see Model Profiles) |
Note: granularity was renamed from depth in v1.22.3. Existing configs are auto-migrated.
Workflow Toggles
All workflow toggles follow the absent = enabled pattern. If a key is missing from config, it defaults to true.
| Setting |
Type |
Default |
Description |
workflow.research |
boolean |
true |
Domain investigation before planning each phase |
workflow.plan_check |
boolean |
true |
Plan verification loop (up to 3 iterations) |
workflow.verifier |
boolean |
true |
Post-execution verification against phase goals |
workflow.auto_advance |
boolean |
false |
Auto-chain discuss → plan → execute without stopping |
workflow.nyquist_validation |
boolean |
true |
Test coverage mapping during plan-phase research |
workflow.ui_phase |
boolean |
true |
Generate UI design contracts for frontend phases |
workflow.ui_safety_gate |
boolean |
true |
Prompt to run /gsd:ui-phase for frontend phases during plan-phase |
workflow.node_repair |
boolean |
true |
Autonomous task repair on verification failure |
workflow.node_repair_budget |
number |
2 |
Max repair attempts per failed task |
workflow.research_before_questions |
boolean |
false |
Run research before discussion questions instead of after |
Recommended Presets
| Scenario |
mode |
granularity |
profile |
research |
plan_check |
verifier |
| Prototyping |
yolo |
coarse |
budget |
false |
false |
false |
| Normal development |
interactive |
standard |
balanced |
true |
true |
true |
| Production release |
interactive |
fine |
quality |
true |
true |
true |
Planning Settings
| Setting |
Type |
Default |
Description |
planning.commit_docs |
boolean |
true |
Whether .planning/ files are committed to git |
planning.search_gitignored |
boolean |
false |
Add --no-ignore to broad searches to include .planning/ |
Auto-Detection
If .planning/ is in .gitignore, commit_docs is automatically false regardless of config.json. This prevents git errors.
Hook Settings
| Setting |
Type |
Default |
Description |
hooks.context_warnings |
boolean |
true |
Show context window usage warnings via context monitor hook |
hooks.workflow_guard |
boolean |
false |
Warn when file edits happen outside GSD workflow context (advises using /gsd:quick or /gsd:fast) |
The prompt injection guard hook (gsd-prompt-guard.js) is always active and cannot be disabled — it's a security feature, not a workflow toggle.
Private Planning Setup
To keep planning artifacts out of git:
- Set
planning.commit_docs: false and planning.search_gitignored: true
- Add
.planning/ to .gitignore
- If previously tracked:
git rm -r --cached .planning/ && git commit -m "chore: stop tracking planning docs"
Parallelization Settings
| Setting |
Type |
Default |
Description |
parallelization.enabled |
boolean |
true |
Run independent plans simultaneously |
parallelization.plan_level |
boolean |
true |
Parallelize at plan level |
parallelization.task_level |
boolean |
false |
Parallelize tasks within a plan |
parallelization.skip_checkpoints |
boolean |
true |
Skip checkpoints during parallel execution |
parallelization.max_concurrent_agents |
number |
3 |
Maximum simultaneous agents |
parallelization.min_plans_for_parallel |
number |
2 |
Minimum plans to trigger parallel execution |
Pre-commit hooks and parallel execution: When parallelization is enabled, executor agents commit with --no-verify to avoid build lock contention (e.g., cargo lock fights in Rust projects). The orchestrator validates hooks once after each wave completes. STATE.md writes are protected by file-level locking to prevent concurrent write corruption. If you need hooks to run per-commit, set parallelization.enabled: false.
Git Branching
| Setting |
Type |
Default |
Description |
git.branching_strategy |
enum |
none |
none, phase, or milestone |
git.phase_branch_template |
string |
gsd/phase-{phase}-{slug} |
Branch name template for phase strategy |
git.milestone_branch_template |
string |
gsd/{milestone}-{slug} |
Branch name template for milestone strategy |
git.quick_branch_template |
string or null |
null |
Optional branch name template for /gsd:quick tasks |
Strategy Comparison
| Strategy |
Creates Branch |
Scope |
Merge Point |
Best For |
none |
Never |
N/A |
N/A |
Solo development, simple projects |
phase |
At execute-phase start |
One phase |
User merges after phase |
Code review per phase, granular rollback |
milestone |
At first execute-phase |
All phases in milestone |
At complete-milestone |
Release branches, PR per version |
Template Variables
| Variable |
Available In |
Example |
{phase} |
phase_branch_template |
03 (zero-padded) |
{slug} |
Both templates |
user-authentication (lowercase, hyphenated) |
{milestone} |
milestone_branch_template |
v1.0 |
{num} / {quick} |
quick_branch_template |
260317-abc (quick task ID) |
Example quick-task branching:
Merge Options at Milestone Completion
| Option |
Git Command |
Result |
| Squash merge (recommended) |
git merge --squash |
Single clean commit per branch |
| Merge with history |
git merge --no-ff |
Preserves all individual commits |
| Delete without merging |
git branch -D |
Discard branch work |
| Keep branches |
(none) |
Manual handling later |
Gate Settings
Control confirmation prompts during workflows.
| Setting |
Type |
Default |
Description |
gates.confirm_project |
boolean |
true |
Confirm project details before finalizing |
gates.confirm_phases |
boolean |
true |
Confirm phase breakdown |
gates.confirm_roadmap |
boolean |
true |
Confirm roadmap before proceeding |
gates.confirm_breakdown |
boolean |
true |
Confirm task breakdown |
gates.confirm_plan |
boolean |
true |
Confirm each plan before execution |
gates.execute_next_plan |
boolean |
true |
Confirm before executing next plan |
gates.issues_review |
boolean |
true |
Review issues before creating fix plans |
gates.confirm_transition |
boolean |
true |
Confirm phase transition |
Safety Settings
| Setting |
Type |
Default |
Description |
safety.always_confirm_destructive |
boolean |
true |
Confirm destructive operations (deletes, overwrites) |
safety.always_confirm_external_services |
boolean |
true |
Confirm external service interactions |
Hook Settings
| Setting |
Type |
Default |
Description |
hooks.context_warnings |
boolean |
true |
Show context window usage warnings during sessions |
Model Profiles
Profile Definitions
| Agent |
quality |
balanced |
budget |
inherit |
| gsd-planner |
Opus |
Opus |
Sonnet |
Inherit |
| gsd-roadmapper |
Opus |
Sonnet |
Sonnet |
Inherit |
| gsd-executor |
Opus |
Sonnet |
Sonnet |
Inherit |
| gsd-phase-researcher |
Opus |
Sonnet |
Haiku |
Inherit |
| gsd-project-researcher |
Opus |
Sonnet |
Haiku |
Inherit |
| gsd-research-synthesizer |
Sonnet |
Sonnet |
Haiku |
Inherit |
| gsd-debugger |
Opus |
Sonnet |
Sonnet |
Inherit |
| gsd-codebase-mapper |
Sonnet |
Haiku |
Haiku |
Inherit |
| gsd-verifier |
Sonnet |
Sonnet |
Haiku |
Inherit |
| gsd-plan-checker |
Sonnet |
Sonnet |
Haiku |
Inherit |
| gsd-integration-checker |
Sonnet |
Sonnet |
Haiku |
Inherit |
| gsd-nyquist-auditor |
Sonnet |
Sonnet |
Haiku |
Inherit |
Per-Agent Overrides
Override specific agents without changing the entire profile:
Valid override values: opus, sonnet, haiku, inherit
Profile Philosophy
| Profile |
Philosophy |
When to Use |
quality |
Opus for all decision-making, Sonnet for verification |
Quota available, critical architecture work |
balanced |
Opus for planning only, Sonnet for everything else |
Normal development (default) |
budget |
Sonnet for code-writing, Haiku for research/verification |
High-volume work, less critical phases |
inherit |
All agents use current session model |
Dynamic model switching, non-Anthropic providers (OpenRouter, local models) |
Environment Variables
| Variable |
Purpose |
CLAUDE_CONFIG_DIR |
Override default config directory (~/.claude/) |
GEMINI_API_KEY |
Detected by context monitor to switch hook event name |
WSL_DISTRO_NAME |
Detected by installer for WSL path handling |
Global Defaults
Save settings as global defaults for future projects:
Location: ~/.gsd/defaults.json
When /gsd:new-project creates a new config.json, it reads global defaults and merges them as the starting configuration. Per-project settings always override globals.