GSD Version
1.21.0
Runtime
Claude Code
What happened?
With commit_docs set to false in .planning/config.json, GSD still commits .planning/ files to git. This happens across multiple workflows (executor, planner, researcher, synthesizer, etc.).
In my project there are 66 commits touching .planning/ — all made while commit_docs: false was set:
$ git log --all --oneline -- .planning/ | wc -l
66
Example commits that should not have been made:
9cf0a41 docs(roadmap): add gap closure phase 31
360e9ba docs(phase-29): complete phase execution — verification passed
0fb9d54 docs: create milestone v2.1 roadmap (4 phases)
c2a3f5d docs: define milestone v2.1 requirements
This also causes a painful side effect: once .planning/ files are committed, they become tracked by git. .gitignore only applies to untracked files, so git add . re-stages them. Running git rm -r --cached .planning/ to untrack never sticks because GSD re-commits them on the next phase execution.
What did you expect?
With commit_docs: false, no .planning/ files should ever be committed to git. All agent workflows and gsd-tools.cjs commit should respect this setting completely.
Steps to reproduce
- Run
/gsd:settings and set commit_docs to false
- Confirm
.planning/config.json shows "commit_docs": false
- Add
.planning/ to .gitignore
- Run
/gsd:plan-phase followed by /gsd:execute-phase
- Check
git log --oneline -- .planning/ — commits to .planning/ files appear despite the setting
Relevant logs or error messages
# .planning/config.json
{
"model_profile": "quality",
"commit_docs": false,
"workflow": {
"research": true,
"plan_check": true,
"verifier": true,
"auto_advance": false,
"nyquist_validation": true
},
"git": {
"branching_strategy": "none"
}
}
# .gitignore entry
.planning/
# The gate exists in commands.cjs but is not effective:
# if (!config.commit_docs) {
# const result = { committed: false, hash: null, reason: 'skipped_commit_docs_false' };
# output(result, raw, 'skipped');
# return;
# }
#
# All doc-committing agents route through gsd-tools.cjs commit
# (executor, planner, researcher, synthesizer), so the gate should work.
# Possible causes:
# - loadConfig(cwd) not resolving the correct config.json
# - Default commit_docs: true in core.cjs winning if config loading fails silently
# - Orchestrator commands bypassing gsd-tools.cjs commit entirely
GSD Version
1.21.0
Runtime
Claude Code
What happened?
With
commit_docsset tofalsein.planning/config.json, GSD still commits.planning/files to git. This happens across multiple workflows (executor, planner, researcher, synthesizer, etc.).In my project there are 66 commits touching
.planning/— all made whilecommit_docs: falsewas set:Example commits that should not have been made:
This also causes a painful side effect: once
.planning/files are committed, they become tracked by git..gitignoreonly applies to untracked files, sogit add .re-stages them. Runninggit rm -r --cached .planning/to untrack never sticks because GSD re-commits them on the next phase execution.What did you expect?
With
commit_docs: false, no.planning/files should ever be committed to git. All agent workflows andgsd-tools.cjs commitshould respect this setting completely.Steps to reproduce
/gsd:settingsand setcommit_docstofalse.planning/config.jsonshows"commit_docs": false.planning/to.gitignore/gsd:plan-phasefollowed by/gsd:execute-phasegit log --oneline -- .planning/— commits to.planning/files appear despite the settingRelevant logs or error messages