{"record":{"id":"a2037e11836ceaaa","repo":"vercel/turborepo","slug":"pad-base-msg","errorCode":null,"errorMessage":"{pad}• {base_msg}","messagePattern":"\\{pad\\}• \\{base_msg\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/turborepo-lib/src/run/mod.rs","lineNumber":455,"sourceCode":"                    self.filtered_pkgs.len()\n                ),\n            )\n            .emit();\n        }\n\n        let (base_msg, is_warning) = remote_cache_status_message(\n            self.remote_cache_status,\n            &self.opts.api_client_opts.api_url,\n        );\n\n        let cache_status = if self.opts.run_opts.is_shared_worktree_cache {\n            format!(\"{pad}• {base_msg}, using shared worktree cache\")\n        } else {\n            format!(\"{pad}• {base_msg}\")\n        };\n\n        if is_warning {\n            turborepo_log::warn(\n                turborepo_log::Source::turbo(turborepo_log::Subsystem::Run),\n                cache_status,\n            )\n            .emit();\n        } else {\n            turborepo_log::info(\n                turborepo_log::Source::turbo(turborepo_log::Subsystem::Run),\n                cache_status,\n            )\n            .emit();\n        }\n        turborepo_log::info(\n            turborepo_log::Source::turbo(turborepo_log::Subsystem::Run),\n            \"\",\n        )\n        .emit();\n    }\n","sourceCodeStart":437,"sourceCodeEnd":473,"githubUrl":"https://github.com/vercel/turborepo/blob/f9245100cf0d31d96628804ead485f6bf226e55a/crates/turborepo-lib/src/run/mod.rs#L437-L473","documentation":"Before a run, turbo resolves a RemoteCacheStatus and formats it via remote_cache_status_message (crates/turborepo-lib/src/run/mod.rs:161-213). Enabled/disabled statuses are printed as info; the Unavailable family (CouldNotConnect, AuthenticationFailed, UsageLimitExceeded, SpendingPaused, DisabledForTeam, UnexpectedServerError) is emitted as this warning with the reason inline, so builds proceed local-cache-only.","triggerScenarios":"Remote caching is configured (linked or TURBO_TOKEN present) but the preflight to the API fails: unreachable api url, invalid/expired token, team usage limit hit, spending paused, remote cache disabled for the team, or a 5xx from the server. is_warning=true only for Unavailable reasons.","commonSituations":"Expired TURBO_TOKEN in CI secrets, typo'd/stale TURBO_API, Vercel usage limits reached at month end, org spending pauses, or self-hosted cache endpoints being down. Builds succeed but every run is cold on remote.","solutions":["Match the parenthesized reason: 'Authentication failed' -> refresh credentials (turbo login or rotate TURBO_TOKEN/TURBO_TEAM); 'Could not connect' -> check TURBO_API/network/proxy; 'Usage limit exceeded'/'Spending paused' -> billing/plan; 'Disabled for this team' -> team settings.","Validate the token against the API endpoint manually (curl with the bearer token) to separate auth vs network issues.","For self-hosted caches, verify the endpoint's health and TLS before rerunning turbo.","Keep local caching on so builds degrade to local-only rather than fully cold."],"exampleFix":"# before: stale CI token\nTURBO_TOKEN=old-token TURBO_TEAM=acme turbo run build\n# -> Remote caching unavailable (Authentication failed ...)\n\n# after: rotate the secret, verify, rerun\ncurl -sS -H \"Authorization: Bearer $TURBO_TOKEN\" \"$TURBO_API/v8/user\" >/dev/null && echo ok\nTURBO_TOKEN=new-token TURBO_TEAM=acme turbo run build","handlingStrategy":"validation","validationCode":"#!/usr/bin/env bash\n# preflight remote cache before a long run\n: \"${TURBO_API:=https://api.vercel.com}\"\nif [ -n \"$TURBO_TOKEN\" ]; then\n  code=$(curl -s -o /dev/null -w '%{http_code}' \\\n    -H \"Authorization: Bearer $TURBO_TOKEN\" \"$TURBO_API/v8/user\")\n  [ \"$code\" = 200 ] || { echo \"remote cache auth preflight failed: HTTP $code\" >&2; exit 1; }\nfi\nturbo run build","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run a token preflight (curl the API with the bearer token) at the start of CI jobs.","Rotate TURBO_TOKEN on a schedule and alert when runs report 'Remote caching unavailable'.","Keep local caching enabled so degraded remote availability only slows, not breaks, builds."],"tags":["turborepo","remote-cache","authentication","connectivity","usage-limits"],"backgroundTag":"remote-cache-unavailable","analyzedSha":"f9245100cf0d31d96628804ead485f6bf226e55a","analyzedAt":"2026-08-17T10:46:15.696Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}