Parking, pausing and credential errors
What happens when tasks keep failing or a credential is rejected, and how to resume.
Three guardrails react to failure: a task that keeps failing is parked, a project where everything keeps failing is paused, and a rejected model credential blocks the project until it changes. Each one is visible in the app and the API, with a reason and a way to resume.
Parked tasks#
A task is parked, and SI Fabrik stops retrying it, when:
- it failed
limits.max_attempts_per_issuetimes in a row (default 5). Retries that only waited for a free slot don't count; or - its attempts together cost
limits.max_cost_per_issue_usdor more (checked when an attempt fails).
SI Fabrik comments on the task to say why, for example stopped after 5 failed attempts in a row (limits.max_attempts_per_issue). Last error: …. The card shows parked, and the project shows a banner with the number of parked tasks.
To resume a parked task, use any of these:
- Resume Retries on the card's context menu, or Resume in the project banner;
- move the task out of the active states and back;
- on a server,
POST /api/v1/projects/<name>/issues/<id>/resume(operator role).
Paused projects#
After limits.pause_after_consecutive_failures failures in a row across the project (default 5) with no success in between, the project pauses itself: no new dispatches, while running agents continue. The project header shows why.
Press Resume in the project header. On a server, resuming needs the admin role (POST /api/v1/projects/<name>/resume), which also clears an automatic pause.
Rejected credentials#
When a run fails because the model provider or gateway rejected the credentials, every attempt would fail the same way. So instead of retrying and parking tasks, SI Fabrik blocks the project with credentials_rejected and says which credential to change:
| Situation | Message points you to |
|---|---|
| A gateway rejected its key | Settings → Model Gateway |
| OpenAI rejected the key (Codex) | Settings → Credentials |
Anthropic rejected ANTHROPIC_API_KEY | A new key in the Anthropic Console, then Settings → Credentials or Environment |
Anthropic rejected CLAUDE_CODE_OAUTH_TOKEN | Run claude setup-token, then Settings → Credentials |
It's recognized from messages such as "invalid x-api-key", "authentication_error", "OAuth token has expired", "invalid bearer token" or "please run /login". A bare HTTP 401 doesn't count, because the app under test can answer 401 too.
SI Fabrik tries again as soon as the credential changes, or when you restart the project.
Other preflight blocks#
Before dispatching, SI Fabrik checks that a run could work at all. A failing check blocks the project with one of these reasons in its header and the Activity log:
| Reason | Fix |
|---|---|
missing_agent_credentials | Add an Anthropic key or claude setup-token token, or a gateway |
missing_gateway_key | Add a key in Settings → Model Gateway |
gateway_unconfigured | Set a base URL in Settings or gateway.base_url |
links: … | Fix the link problem shown |
cloudflare_not_configured | Set the bridge URL and token |
docker_unavailable | Start Docker, or set docker.enabled: false (on the Mac, with agents allowed to run directly on it) |
sandbox_policy | Fix what the message names in WORKFLOW.md, or on the Mac turn on Edit Project → Allow agents to run directly on this Mac. See The sandbox floor. |