Troubleshooting
Common issues and fixes for Squad installation and usage.
Quick fixes
| Error | Cause | Fix |
|---|---|---|
squad: command not found | Squad CLI not installed or not in PATH | Run npm install -g @bradygaster/squad-cli or use npx @bradygaster/squad-cli |
No .squad/ directory found | Not in a git repo or Squad not initialized | Run git init then npx squad init |
Cannot find agent "{name}" | Agent doesn’t exist in .squad/agents/ | Check .squad/team.md for roster, or re-run casting |
gh: command not found | GitHub CLI not installed | Install from cli.github.com then gh auth login |
Node.js version error | Node.js version below v20 | Upgrade Node.js to v20+ (see below) |
npx github:bradygaster/squad appears to hang
Problem: Running the install command shows a frozen npm spinner. Nothing happens.
Cause: npm resolves github: package specifiers via git+ssh://git@github.com/.... If no SSH agent is running (or your key isn’t loaded), git prompts for your passphrase on the TTY — but npm’s progress spinner overwrites the prompt, making it invisible. This is an npm TTY handling issue, not a Squad bug.
Fix (choose one):
-
Start your SSH agent first (recommended):
eval "$(ssh-agent -s)" ssh-addThen re-run
npx github:bradygaster/squad. -
Disable npm’s progress spinner to reveal the prompt:
npx --progress=false github:bradygaster/squad -
Use HTTPS instead of SSH by configuring git:
git config --global url."https://github.com/".insteadOf git@github.com:
Reference: #30
gh CLI not authenticated
Problem: GitHub Issues, PRs, Ralph, or Project Boards commands fail with authentication errors.
Cause: The gh CLI isn’t logged in, or is missing required scopes.
Fix:
-
Log in:
gh auth login -
If using Project Boards, add the
projectscope:gh auth refresh -s project -
Verify:
gh auth status
Authentication fails on cross-org repos
Problem: Squad agents hit authentication errors when working with repositories across personal GitHub and GitHub Enterprise Managed Users (EMU) organizations.
Cause: The gh CLI and git credentials are tied to one account at a time. When you switch contexts between personal and EMU repos, the active account may not have access to the target repository.
Fix:
-
Use
gh auth switchto toggle between authenticated accounts:gh auth status gh auth switch --user <username> -
Add account mappings to
.github/copilot-instructions.mdso Squad agents know which account to use for which repos. -
Configure git credential helpers per host or organization.
See Cross-organization authentication for detailed setup instructions.
Node.js version too old
Problem: npx github:bradygaster/squad fails with an engine compatibility error, or Squad behaves unexpectedly.
Cause: Squad requires Node.js 20.0.0 or later (LTS), enforced via engines in package.json.
Fix:
node --version
If below v20, upgrade to the latest LTS:
- nvm (macOS/Linux):
nvm install --lts && nvm use --lts - nvm-windows:
nvm install lts && nvm use lts - Direct download: nodejs.org
Squad agent not appearing in Copilot
Problem: After install, squad doesn’t show up in the /agent (CLI) or /agents (VS Code) list in GitHub Copilot.
Cause: The .github/agents/squad.agent.md file may not have been created, or Copilot hasn’t refreshed its agent list.
Fix:
-
Verify the file exists:
ls .github/agents/squad.agent.mdIf missing, re-run
npx github:bradygaster/squad. -
Restart your Copilot session — close and reopen the terminal or editor.
Upgrade doesn’t change anything
Problem: Running npx github:bradygaster/squad upgrade completes but nothing changes.
Cause: You may already be on the latest version, or npm cached an old version.
Fix:
-
Check current version in
.github/agents/squad.agent.md(frontmatterversion:field). -
Clear npm cache and retry:
npx --yes github:bradygaster/squad upgrade
Windows-specific issues
Problem: Path errors or file operations fail on Windows.
Cause: Some shell commands assume Unix-style paths.
Fix: Squad’s core uses path.join() for all file operations and is Windows-safe. If you see path issues:
- Use PowerShell or Git Bash (not cmd.exe)
- Ensure git is in your PATH
- Ensure
ghCLI is in your PATH
”⚠ squad pre-commit: refusing to commit two-layer state into the working tree”
Problem: A git commit is blocked with the message above.
Cause: You’re on the orphan or two-layer backend, and one or more state files (.squad/decisions.md, .squad/agents/*/history.md, .squad/casting/, .squad/routing/) were staged for commit. These files belong on the squad-state orphan branch, not in your working branch. Something wrote them back to disk after the migration — a direct fs.writeFile call, an editor auto-save, or an external tool — and you staged them unintentionally.
Recovery flow:
-
Unstage the state files:
git restore --staged .squad/decisions.md git restore --staged ".squad/agents/*/history.md" -
Check whether the orphan branch already has the content (it should, if
squad synchas run):git show squad-state:decisions.md git show squad-state:agents/<agent-name>/history.md -
If the working-tree copy contains new content not yet on the orphan branch, lift it through Squad before deleting:
squad memory write --file .squad/decisions.md -
Remove the working-tree copies:
# PowerShell Remove-Item .squad\decisions.md -ErrorAction SilentlyContinue Get-ChildItem .squad\agents -Recurse -Filter history.md | Remove-Item# bash rm -f .squad/decisions.md .squad/agents/*/history.md -
Commit normally — the
post-commithook will callsquad sync --quietautomatically:git commit -m "your commit message"
When to use SQUAD_SYNC_ACTIVE=1: Rarely. This env var bypasses both the pre-commit and post-commit hooks. It’s intended for internal use by squad sync itself to prevent recursion. If you set it to unblock a commit, the state files will land in your working-branch history and appear in PRs — exactly what two-layer is designed to prevent. Use the recovery flow above instead.