Appearance
Troubleshooting
Environment Issues
Claude Code not found
bash
which claude
claude --version
# Reinstall
npm install -g @anthropic-ai/claude-codeGitHub auth failed
bash
gh auth status
gh auth login
# Use gh token as PAT if needed
export GITHUB_PAT=$(gh auth token)Check all required variables
bash
env | grep -E "(GITHUB|ANTHROPIC|CLAUDE)"ADW Execution Issues
"Agent execution failed"
The most common issue — Claude Code encountered an error in execution.
bash
# Read the raw output
cat agents/<adw-id>/sdlc_planner/raw_output.jsonl | python3 -m json.tool | tail -50
# Enable debug mode and re-run
export ADW_DEBUG=true
uv run adw_plan_build.py <issue>"Missing plan file"
The build phase can't find the spec. Regenerate the plan:
bash
uv run adw_plan.py <issue>
# This creates specs/issue-<n>-adw-<id>-*.md
# Then run build with the new ADW IDBuild failed mid-phase
Resume from the failed phase using the existing ADW ID:
bash
# Find the ADW ID
ls agents/
cat agents/<adw-id>/adw_state.json
# Resume the specific phase
uv run adw_build.py <issue> <adw-id>
uv run adw_test.py <issue> <adw-id>
uv run adw_review.py <issue> <adw-id>Tests failing, auto-fix not working
The test auto-fix loop runs 3 times before giving up. Check what it attempted:
bash
cat agents/<adw-id>/tester/raw_output.jsonl | python3 -m json.toolCommon causes:
- Missing test dependencies in
package.json - Test requires a running server that isn't started
- Test requires database state that doesn't exist
- E2E tests require a specific browser setup
Git Issues
"Branch already exists"
bash
git branch -d feat-<n>-<adw-id>-<slug> # Delete local
git push origin --delete feat-<n>-<adw-id>-<slug> # Delete remote"Merge conflict in specs/"
Specs are generated files. If two ADW runs both added a spec file with the same name, keep both and rename one.
ADW is committing to the wrong branch
Check the state file:
bash
cat agents/<adw-id>/adw_state.json | python3 -m json.tool
# Look at "branch_name"Webhook Issues
Webhook not receiving events
- Check that the server is running:
GET https://your-domain.com/health - Check GitHub webhook delivery logs: repo → Settings → Webhooks → your webhook → Recent Deliveries
- Verify the webhook secret matches
GITHUB_WEBHOOK_SECRET - Check ngrok/Cloudflare tunnel is active
Webhook fires but no ADW starts
bash
# Check the webhook server logs
uv run adw_triggers/trigger_webhook.py # run in foreground to see logsLook for:
- "No trigger keyword found" — issue comment doesn't contain a trigger keyword
- "Already processing issue" — another ADW is running for this issue
- Auth errors
Cron trigger not picking up issues
bash
# Run with verbose logging
uv run adw_triggers/trigger_cron.pyThe cron picks up issues where:
- Issue is open with zero comments, OR
- Latest comment is exactly
adw
Leading/trailing spaces in the comment prevent the trigger. Ensure the comment is exactly adw.
Hook Issues
Hook not firing
- Run
/hooksin Claude Code to verify registration - Check JSON syntax in settings.json
- Verify the script is executable:
chmod +x .claude/hooks/my-hook.py - Check the matcher pattern — it's case-sensitive
- Enable debug:
claude --debug
Hook running but not blocking
Exit code 2 blocks and shows stderr to Claude. Exit code 0 does NOT show stdout to Claude (except UserPromptSubmit). Check your exit code logic.
"Hook command not found"
Use absolute paths in hook commands:
json
{
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/my-hook.py"
}$CLAUDE_PROJECT_DIR is the absolute path to the project root directory.
API Rate Limits
If you're hitting Anthropic API rate limits during parallel runs:
- Reduce parallelism — run 2-3 issues at a time instead of 10
- Add delays between parallel starts
- Use Sonnet instead of Opus (higher rate limits)
Monitor usage at console.anthropic.com.