Bug
run() in src/lib/git.ts uses execFileSync (no shell). Several tools pass strings with shell operators (||, &&, 2>/dev/null, |) that get split on whitespace and passed as literal git arguments, silently failing.
Fixed in #88: what-changed.ts, checkpoint.ts
Still affected:
token-audit.ts — uses wc -l < ..., tail -c via run()
verify-completion.ts — uses npx tsc --noEmit 2>&1 | tail via run()
enrich-agent-task.ts — uses git ls-files | head | grep via run()
scope-work.ts — uses git ls-files | head | grep via run()
session-handoff.ts — uses command -v via run()
These need to either:
- Use array args with proper fallback logic (like
getDiffFiles)
- Use a separate
execSync with shell: true for non-git commands
- Use Node APIs directly (e.g.
fs.statSync instead of wc)
Bug
run()insrc/lib/git.tsusesexecFileSync(no shell). Several tools pass strings with shell operators (||,&&,2>/dev/null,|) that get split on whitespace and passed as literal git arguments, silently failing.Fixed in #88:
what-changed.ts,checkpoint.tsStill affected:
token-audit.ts— useswc -l < ...,tail -cvia run()verify-completion.ts— usesnpx tsc --noEmit 2>&1 | tailvia run()enrich-agent-task.ts— usesgit ls-files | head | grepvia run()scope-work.ts— usesgit ls-files | head | grepvia run()session-handoff.ts— usescommand -vvia run()These need to either:
getDiffFiles)execSyncwithshell: truefor non-git commandsfs.statSyncinstead ofwc)