iiRecord
Agentic AI Atlas · Claude Code persistent (unattended) retry policy
retry-policy:claude-code-persistent-unattendeda5c.ai
II.
RetryPolicy JSON

retry-policy:claude-code-persistent-unattended

Structured · live

Claude Code persistent (unattended) retry policy json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · lifecycle/retry-policies/claude-code-persistent.yamlCluster · lifecycle
Record JSON
{
  "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"
      }
    }
  ]
}