II.
RetryPolicy JSON
Structured · liveretry-policy:claude-code-persistent-unattended
Claude Code persistent (unattended) retry policy json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "retry-policy:claude-code-persistent-unattended",
"_kind": "RetryPolicy",
"_file": "lifecycle/retry-policies/claude-code-persistent.yaml",
"_cluster": "lifecycle",
"attributes": {
"displayName": "Claude Code persistent (unattended) retry policy",
"variant": "persistent",
"maxRetries": 10,
"baseDelayMs": 500,
"maxDelayMs": 300000,
"backoffStrategy": "exponential-jitter",
"jitterFactor": 0.25,
"honorRetryAfterHeader": true,
"retryableStatusCodes": [
429,
529
],
"heartbeatIntervalMs": 30000,
"persistentMaxBackoffMs": 300000,
"persistentResetCapMs": 21600000,
"description": "Active when CLAUDE_CODE_UNATTENDED_RETRY is set. Bypasses subscriber gates\nand x-should-retry header; retries 429/529 indefinitely. Uses\nanthropic-ratelimit-unified-reset to wait until window reset rather than\npolling. Long sleeps are chunked so the host sees stdout activity and does\nnot mark the session idle (each chunk yields a SystemAPIErrorMessage).\n"
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "retry-policy:claude-code-default",
"to": "retry-policy:claude-code-persistent-unattended",
"kind": "has_retry_policy_variant",
"attributes": {
"condition": "CLAUDE_CODE_UNATTENDED_RETRY enabled"
}
}
]
}