Troubleshooting
Diagnose and recover from common failures.
Last updated
#No eligible issues
Symptoms:
roark auto --dry-runprints no selected issues.- Scheduled autorun exits without claiming work.
Check:
gh issue view 123 --repo owner/repo --json labels,state,assigneesCommon causes:
- issue is closed
- missing ready label, default
ready-for-agent - issue has a skip label
- custom
--label,--skip-label, or--skip-labelsdoes not match the repository label policy
Read Label semantics.
#Missing required labels
Symptoms:
- dry run reports missing labels
- autorun stops before claiming work
Normal autorun can create required lifecycle labels. Dry run reports missing labels without creating them.
Use a non-dry autorun when you are ready for Roark to create missing required labels, or create labels manually with gh label create.
#GitHub authentication fails
Symptoms:
gh auth statusfails- scheduled jobs work manually but fail under cron or launchd
- GitHub API calls return permission errors
Check as the same user that runs Roark:
gh auth status
gh repo view owner/repoFor launchd, run under the user's login session so keychain credentials are available. For GitHub Actions, set GH_TOKEN and repository permissions.
#Verification command missing
Symptoms:
autoorcontinuerefuses to publish because no verification command is configured
Fix:
{
"verify": "bun run check"
}Or pass:
roark auto --repo owner/repo --verify "bun run check"See Verification.
#Verification cannot find ignored files
Symptoms:
verification.mdshows missing.env,.secrets, credentials, generated config, or other ignored files
Fix by copying path names, not secret values:
{
"workspace": {
"copyToWorktree": [".secrets/env"]
}
}The destination must be ignored by Git. See Managed workspaces and Security and secrets.
#Dirty managed workspace
Symptoms:
- a fresh
autorun refuses an existing issue workspace - command output says to use
continueor clean/remove the workspace
Use:
roark continue 123 --repo owner/repoIf the work is no longer needed:
roark remove 123 --forceDo not remove a workspace if it may contain recoverable uncommitted work.
#Branch already exists
Symptoms:
- branch creation or checkout fails
- issue branch already exists locally or remotely
Roark issue branches use:
roark/issue-<number>Inspect:
git branch --list 'roark/issue-*'
git ls-remote --heads origin 'roark/issue-*'If the branch belongs to a previous attempt, prefer roark continue. If it is unrelated, rename or remove it deliberately.
#Readiness fails
Symptoms:
readiness.jsonis missing, invalid, or its status is notready-for-pr- no PR is opened
Open:
.roark/runs/issue/<n>/attempts/<k>/readiness.mdRead readiness.md for the explanation and readiness.json for the decision. Then inspect the latest review and fix logs. Fix any local setup problems and run roark continue.
#PR not opened
Common causes:
- readiness failed
- verification failed
- push failed
- GitHub token lacks
contents:writeor pull request permissions - branch head is not publishable
Inspect summary.json, verification.md, command output, and GitHub auth state.
#PR revision makes no commit
revise-pr does not commit when:
- all feedback is already addressed
- all actionable feedback is classified
needs-human,non-blocking, orinvalid/stale - verification fails
- the working tree is dirty and preflight refuses to continue
See PR revisions.
#Scheduler runs overlap
Symptoms:
- issue claiming races
- dirty workspace surprises
Use scheduler-level serialization:
flockfor cronconcurrencyfor GitHub Actions- one launchd job per control checkout
See Scheduling and Operations runbook.
#macOS exit notification does not appear
Exit notifications require a valid repository .roark/config.json with:
{
"notifications": { "onExit": true }
}Check System Settings → Notifications for the application that presents osascript notifications, then check the active Focus mode.
Roark does not send a notification:
- on non-macOS hosts
- outside a Git repository
- when
.roark/config.jsonis missing or invalid - after a signal, runtime crash, forced termination, or power loss
Roark waits up to two seconds for /usr/bin/osascript. A launch failure, timeout, or nonzero exit prints a warning without changing the original command's exit code.
#Model and provider failures
Model not foundor request-shape errors: runbun install --frozen-lockfileto restore the supported Pi version.- Authentication errors: run Pi interactively and use
/loginforopenai-codex, then retry as the same OS user. - Unsupported thinking levels: Roark reports the requested and effective levels when Pi clamps the selection; unsupported
maxfalls back to the highest supported level. - To roll back, rerun or continue with
--model openai-codex/gpt-5.5.
#Files to inspect
For issue attempts:
.roark/runs/issue/<n>/attempts/<k>/summary.json
.roark/runs/issue/<n>/attempts/<k>/verification.md
.roark/runs/issue/<n>/attempts/<k>/readiness.json
.roark/runs/issue/<n>/attempts/<k>/readiness.md
.roark/runs/issue/<n>/attempts/<k>/events.jsonlFor PR revisions:
.roark/runs/pr/<pr-number>/revision-<n>/See Artifacts.