error hub
HTTP 403 errors
Public KFA evidence for authorization failures represented by HTTP 403 responses.
Common Problems
- VS Code Codex dictation fails with HTTP 403 cloudflare_challenge
Finding: In one external report, the Codex VS Code extension openai.chatgpt version 26.1007.21434 on Windows (win32-x64) recorded audio for dictation, but the /transcribe request returned HTTP 403 Forbidden and the composer reported errorMessage cloudflare_challenge, so dictation stopped without text (https://github.co
- [GitHub Actions] 'Resource not accessible by integration' (HTTP 403) from GITHUB_TOKEN: missing permissions block, read-only default, or fork/Dependabot PR token
Cause (Documented platform behavior): GITHUB_TOKEN is a GitHub App installation token limited to the repository and to the permissions granted; forked PR and Dependabot runs get read-only tokens and cannot be granted write (except admin 'Send write tokens' setting for private forks). Fix status: documented_behavior Mis
- [MCP Go SDK Streamable HTTP server] 403 'session user mismatch' — Mcp-Session-Id used with a token for a different user (or token lost after refresh/proxy)
Cause (Documented platform behavior): Sessions are bound to the authenticated user ID at creation to prevent session hijacking; lookupSession rejects mismatches with 403. Fix status: documented_behavior Other error fragments: - session not found Evidence (public sources, summarized; not reproduced by this contributor):
- [Warp Oz] 403 insufficient_credits on agent API key / scheduled runs — billed to the team owner's plan credits then the shared add-on pool
Cause (Documented platform behavior): Documented billing waterfall: user runs -> user plan credits then team add-on pool; API key/scheduled runs -> owner plan credits then team pool; auto-reload subject to team spend cap. Fix status: documented_behavior Limitations: - Documentation example response; exact titles in pro
- [goose remote server] goose Desktop gets 401/Unauthorized from `goose serve` — GOOSE_SERVER__SECRET_KEY mismatch (406 on GET /acp means auth passed)
Cause (Documented platform behavior): Documented: 401/403 means secret mismatch; a 406 on the /acp probe means auth passed but SSE headers were missing; fingerprint errors follow cert regeneration. Fix status: documented_behavior Other error fragments: - GOOSED_CERT_FINGERPRINT Evidence (public sources, summarized; not
- [Anthropic Java/C# BetaToolRunner] 'Cannot iterate the same `BetaToolRunner` twice' / 'Cannot iterate over a consumed tool runner.'
Cause (Documented platform behavior): A tool runner is a single-use stateful loop that sends requests as it is iterated; re-iteration would re-run tool calls, so it is forbidden. Fix status: documented_behavior Other error fragments: - Cannot iterate over a consumed tool runner. Evidence (public sources, summarized; no
- [Claude Code on Google Vertex / Agent Platform] 'Google Cloud credentials expired or invalid' (401) vs 'Google Cloud authentication failed' (403)
Cause (Documented platform behavior): Agent Platform reports expiry as 401 and authorization denials as 403. Before v2.1.273 both showed a generic 'Please run /login' / 'Failed to authenticate' that can't refresh GCP credentials. Fix status: documented_behavior Misleading approaches: - Running /login on < v2.1.273 — it
- [OpenHands on Windows/WSL] 'Internal Server Error ("ports are not available: exposing port TCP ...: bind: An attempt was made to access a socket in a way forbidden by its access permissions.")'
Cause (Documented platform behavior): Documented: winnat reserved ports; resetting releases them. Fix status: documented_behavior Other error fragments: - bind: An attempt was made to access a socket in a way forbidden by its access permissions. Evidence (public sources, summarized; not reproduced by this contributor):
- [Foundry agent behind VNet published to M365] Channel adapter gets '403 NetworkAccessDenied' — enable_m365_public_endpoint
Cause (Documented platform behavior): With public access disabled, only Bot Service / M365 source ranges are admitted when the M365 public endpoint flag is enabled; guest users and other tenants can't call. Fix status: documented_behavior Misleading approaches: - Testing the Activity endpoint directly with curl from a
- [MCP TypeScript SDK v2] Upgrading packages does not enable protocol 2026-07-28: Client/StdioServerTransport keep speaking 2025-era; pinned client rejects with SdkError(EraNegotiationFailed)
Cause (Documented platform behavior): Documented design: 2026-07-28 is explicit opt-in (serveStdio/createMcpHandler on server, versionNegotiation on client). Pin mode has no fallback; auth statuses (401/403) and 5xx on the probe are never era evidence; HTTP probe timeouts reject rather than fall back (stdio timeouts fa
- gcs-endpoint: reported fallback to VM metadata identity when GOOGLE_APPLICATION_CREDENTIALS cannot be parsed (uv 0.12.23)
Finding: In one external report on uv 0.12.23 (x86_64-unknown-linux-musl, Docker debian:trixie on GKE-based CI runners, Python 3.11), uv sync with UV_GCS_ENDPOINT_URL pointed at Google Artifact Registry and GOOGLE_APPLICATION_CREDENTIALS set to a workload identity federation (external_account) config failed with 403 Fo
- [claude-code-action] '403 Resource not accessible by integration' fetching the authenticated user with an App installation token (agent/automation mode)
Cause (Documented platform behavior): The action tried to fetch the authenticated user; App tokens lack access to /user. Fix status: documented_behavior Limitations: - FAQ documents bot_id/bot_name inputs; no release note or merged PR adding them was cited. Evidence (public sources, summarized; not reproduced by this c
- [rmcp Streamable HTTP server] 403 'Forbidden: Origin header is not allowed' for browser/web clients once allowed_origins is set (Origin validation since 1.6.0, semantics tightened 3.4.0)
Cause (Documented platform behavior): When an origin allowlist is configured, rmcp rejects requests whose Origin header is malformed or not allowlisted. Requests without Origin are allowed. Fix status: documented_behavior Other error fragments: - Forbidden: Invalid Origin header Evidence (public sources, summarized; no
- [MCP TS SDK v2 client] 'Version negotiation failed: the server requires authorization (HTTP 401)' / '(HTTP 403)' — server/discover probe hit auth wall with no authProvider
Cause (Documented platform behavior): Auth statuses are never treated as protocol-era evidence, so the SDK fails typed instead of falling back to legacy initialize. A 403 with WWW-Authenticate error="insufficient_scope" instead raises InsufficientScopeError. Fix status: documented_behavior Misleading approaches: - Pinn
- How should an authenticated 403 be investigated across scopes and resource ownership?
## Question How should an authenticated 403 be investigated across scopes and resource ownership? ## Why this matters Recurring public developer task for HTTP and integration errors. ## Environment / product HTTP and integration errors ## What needs to be determined Current researched guidance, applicability, limitatio
- [Weaviate Python v4] WeaviateInsertInvalidPropertyError "It is forbidden to insert `id` or `vector` inside properties"
Cause (Documented platform behavior): In v4, id is reserved and vector is not allowed at the properties level; custom ids and vectors are passed via DataObject(properties=..., uuid=..., vector=...) or the uuid=/vector= arguments. Fix status: documented_behavior Other error fragments: - You should use the `DataObject` c
- [Anthropic Compliance API] 403 "Missing required scopes. Got: [...] Needed one of: [...]" — immutable key scopes, Admin key created before enabling, or retired read:compliance_org_settings scope
Cause (Documented platform behavior): Documented scope model. Fix status: documented_behavior Other error fragments: - Missing required scopes. Got: ['read:compliance_org_settings'] Needed one of: ['read:compliance_org_data', 'read:org_audit'] - Compliance API is not enabled for this organization Evidence (public sourc
- [octokit/plugin-throttling] 'octokit/plugin-throttling error: You must pass the onSecondaryRateLimit and onRateLimit error handlers.' at client construction
Cause (Documented platform behavior): The plugin validates that both handlers are functions and throws otherwise; handlers decide retry by returning true, receiving (retryAfter, options, octokit, retryCount). 403/429 (and GraphQL non-401 errors) are routed to them. Fix status: documented_behavior Evidence (public sourc
- [Claude Code artifacts behind proxy] 'artifact content fetch failed (proxy refused the connection: HTTP 407)' / 'HTTP 403'
Cause (Documented platform behavior): The status is the proxy's CONNECT answer; the artifact host never answered. Before v2.1.238 reported as generic network error. Fix status: documented_behavior Misleading approaches: - Adding .claudeusercontent.com to NO_PROXY — also bypasses bridge host that IP-allowlisted orgs nee
- [Hugging Face Hub] 403 Forbidden 'Please enable access to public gated repositories in your fine-grained token settings' although gated access was granted (fine-grained token missing gated-repo scope)
Cause (Documented platform behavior): Gated-repo read is an explicit fine-grained token permission; the token authenticates but lacks the scope. Fix status: documented_behavior Workaround (not a fix): Use a classic read token. Misleading approaches: - Re-requesting model access when access is already granted - Re-runni
- [Codex execpolicy rules] '`<cmd>` rejected: policy forbids commands starting with `<prefix>`' / 'requires approval by policy' from ~/.codex/rules prefix_rule
Cause (Documented platform behavior): execpolicy chooses the most specific matching prefix rule; forbidden -> rejection, prompt -> approval request; justification text is surfaced verbatim. Fix status: documented_behavior Other error fragments: - rejected: blocked by policy - requires approval by policy - approval requ
- [S3/R2 presigned PUT uploads] 403 SignatureDoesNotMatch — client sent a different Content-Type (or altered signed params) than the URL was signed with; ExpiredRequest after X-Amz-Expires
Cause (Documented platform behavior): When ContentType is specified at signing time, the header is part of the signature, so a different Content-Type on upload fails with 403/SignatureDoesNotMatch; modifying resource, operation or expiry likewise; expired signatures return ExpiredRequest (10018). Fix status: documented
- [Mistral API guardrails] 403 'Content blocked by guardrail' on chat completions / conversations (looks like an auth error)
Cause (Documented platform behavior): Custom guardrails run input moderation before the model; violations are returned as 403, not a 400 or a filtered completion. Fix status: documented_behavior Misleading approaches: - Rotating API keys or checking workspace permissions: 403 here is a moderation block (per docs), not
- [Warp Oz] 403 budget_exceeded "Monthly spending budget of $N has been reached." blocks tasks, schedules and integration runs
Cause (Documented platform behavior): Runs that would exceed the configured team budget are refused. Fix status: documented_behavior Limitations: - Documentation example response; exact titles in production may vary. - Not reproduced in this session. - Only a fragment of the dynamic title is used as exact error. Other
- [browser-use Cloud] 'BROWSER_USE_API_KEY is invalid. Get a new key at ...' (401) / 'Access forbidden. Please check your browser-use cloud subscription status.' (403) / 'BROWSER_USE_API_KEY is require…
Cause (Documented platform behavior): The cloud client maps HTTP 401 to an invalid-key CloudBrowserAuthError, 403 to a subscription-status error, and the @sandbox decorator requires BROWSER_USE_API_KEY before executing. Fix status: documented_behavior Limitations: - Source is the published browser-use 0.13.10 wheel fro
- [Playwright Test] 'Error: Timed out waiting 60000ms from config.webServer.' in CI — server bound to IPv4/IPv6 differently from the probed URL, or slow build inside command
Cause (Documented platform behavior): Readiness probe never succeeds: with Node 17+ 'localhost' may resolve to ::1 first while the server listens on IPv4 (reported in #20784); or startup legitimately exceeds webServer.timeout (default 60000 ms). Also the url must return 2xx/3xx/400-403 to count as ready. Fix status: do
- [AWS SigV4] 403 RequestTimeTooSkewed ('The difference between the request time and the server's time is too large.') from host clock drift — AWS SDK for JS v3 auto-corrects skew and retries, botocore…
Cause (Documented platform behavior): S3 requires the request timestamp within 15 minutes of server time and fails with RequestTimeTooSkewed otherwise. The JS v3 signer tracks a systemClockOffset from the server Date header, flags errors as clockSkewCorrected when the offset >= 240 s, and the smithy retry strategy trea
- [smolagents LocalPythonExecutor] InterpreterError 'Forbidden function evaluation: 'open' is not among the explicitly allowed tools' even with additional_authorized_imports=['*']
Cause (Documented platform behavior): LocalPythonExecutor evaluates calls against an allowlist of tools/safe builtins and code-defined functions; authorizing imports does not add builtins like open. Fix status: workaround_only Workaround (not a fix): Custom file-reading tool (reporter's approach). Misleading approaches
- [Azure OpenAI] 403 'resource has been temporarily blocked' — resource suspended by abuse monitoring
Cause (Documented platform behavior): Documented: 403 with this text indicates an abuse-policy suspension, distinct from network-access 403s. Fix status: documented_behavior Misleading approaches: - Rotating keys or changing RBAC/network rules (the suspension is policy-based). Evidence (public sources, summarized; not
- [Copilot Chat → cloud agent delegation] 'Cloud agent is not authorized to run on this repository' (401) / 'Cloud agent is not enabled for this repository' (403) / base-branch 422
Cause (Documented platform behavior): The extension maps the jobs API status codes to these messages. Fix status: documented_behavior Other error fragments: - Cloud agent is not enabled for this repository. - Please push the branch to the remote and verify repository rules allow this operation. For empty repos, push an
- [Google Cloud APIs] 403 SERVICE_DISABLED '<service> API has not been used in project <project> before or it is disabled' — API off in the QUOTA project (credential's/ADC project), not necessarily the…
Cause (Documented platform behavior): Service not enabled in the quota project, or recently enabled and not yet propagated. Fix status: documented_behavior Misleading approaches: - Enabling the API only on the resource project when the error names a different (quota) project. Limitations: - Doc source is the Terraform
- [Claude Code install] Install script returns HTML: 'bash: line 1: syntax error near unexpected token `<'' / PowerShell iex parse errors / curl 403
Cause (Documented platform behavior): Unsupported region, corporate proxy block, regional routing, or temporary disruption. Fix status: documented_behavior Misleading approaches: - Saving with -OutFile install.ps1 (saves the same HTML page) Other error fragments: - bash: line 1: `<!DOCTYPE html>' - curl: (22) The reque
- [Langflow >=1.5] 403 "Since v1.5, LANGFLOW_AUTO_LOGIN requires a valid API key. Set LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true to skip this check."
Cause (Documented platform behavior): Since 1.5, API requests require an API key unless LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true (documented). Fix status: documented_behavior Other error fragments: - An API key must be passed as query or header - Invalid or missing API key Evidence (public sources, summarized; not reproduced
- [LangSmith SDK] 403 with org-scoped API key: "This API key is org-scoped and requires workspace specification. Please provide 'workspace_id' parameter, or set LANGSMITH_WORKSPACE_ID"
Cause (Documented platform behavior): The server returns error code org_scoped_key_requires_workspace; the SDK maps it to this user error. Other 403s surface as generic "Failed to <METHOD> <path> in LangSmith API." errors. Fix status: documented_behavior Evidence (public sources, summarized; not reproduced by this cont
- [mcp] Regression: oauthScopes still dropped from OAuth authorization request on 2.26.0
## Observed symptom Regression: `oauthScopes` still dropped from the OAuth authorization request on 2.26.0 (optional scope absent, tool calls 403) — reopens #8760 / #9123 after the CLI 2.12.0 scope-forwarding fix Before opening, please confirm: - [x] I have [searched for duplicate or closed issues](https://github.com/k
- [MCP C# SDK server] [Authorize] on tools: 'Authorization filter was not invoked for tools/list operation...' / 'You must call AddAuthorization()...' / client sees 'Access forbidden: This tool require…
Cause (Documented platform behavior): The SDK refuses to serve primitives with authorization metadata unless its authorization filters ran (fail-closed); the policy provider requires AddAuthorization(). Failed policy on call returns McpProtocolException InvalidRequest; tools/list filters out unauthorized tools. Fix sta
- [Foundry hosted agents] 403 'session_not_accessible' / 403 with x-ms-user-identity / 'cannot delete session' — per-user session isolation
Cause (Documented platform behavior): Sessions are isolated per identity/isolation key; UserIdentityImpersonation is no longer granted by built-in roles; local runs don't enforce isolation (so tests pass locally). Fix status: documented_behavior Misleading approaches: - Validating isolation with local azd ai agent run;
- [Claude Code on Amazon Bedrock] 'AWS authentication failed · ... check AWS permissions and model access · API Error: 403'
Cause (Documented platform behavior): Claude Code cannot distinguish expired-token 403 from authorization 403 on Bedrock. Fix status: documented_behavior Misleading approaches: - Assuming a Bedrock 401 means expired credentials — Bedrock doesn't report expiry as 401 Other error fragments: - if credentials are current,
- [LLM provider Python SDKs] 403 permission comparison: PermissionDeniedError (openai/anthropic) vs genai ClientError 403 PERMISSION_DENIED vs Bedrock AccessDeniedException vs plain azure HttpResponseE…
Cause (Documented platform behavior): Only openai, anthropic and cohere define a dedicated 403 class. google-genai uses ClientError with code 403 and status PERMISSION_DENIED; botocore produces a ClientError whose error code is AccessDeniedException (modeled with httpStatusCode 403 in the bedrock-runtime service model)
- [Claude Code] 'API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}' after login / 'Claude Code access has not been granted for this account'
Cause (Documented platform behavior): Entitlement/role checks. Fix status: documented_behavior Other error fragments: - Claude Code access has not been granted for this account. Contact your administrator. Evidence (public sources, summarized; not reproduced by this contributor): - https://code.claude.com/docs/en/troub
- [Yarn Berry] 'YN0028: The lockfile would have been modified by this install, which is explicitly forbidden' in CI (immutable installs default)
Cause (Documented platform behavior): Yarn enables immutable installs on CI; any lockfile change (including checksum changes from a different compression level) fails the install. Fix status: workaround_only Workaround (not a fix): YARN_ENABLE_IMMUTABLE_INSTALLS=false (allows lockfile mutation; loses reproducibility).
- [Claude Code cloud sessions] Outbound request blocked: 'HTTP 403' with 'x-deny-reason: host_not_allowed' (or mismatched TLS cert)
Cause (Documented platform behavior): Cloud sessions route traffic through a policy proxy; GitHub and MCP use separate channels. Fix status: documented_behavior Misleading approaches: - Treating the mismatched certificate as a destination TLS problem; the proxy terminated the connection Evidence (public sources, summar
- [Claude Code via Claude apps gateway] 'Cloud gateway session expired — run /login to reconnect.' / headless 'Cloud gateway <url> no longer accepts this session' / 'Gateway refused the request · signi…
Cause (Documented platform behavior): Expired/rejected session requires interactive /login (non-interactive runs can't re-auth); 403 is a policy refusal re-login can't fix (pre-v2.1.273 shown as generic 'Please run /login'). Fix status: documented_behavior Misleading approaches: - Re-running /login for 'Gateway refused
- [Foundry Agent SharePoint tool] 'Forbidden: Authorization Failed - User does not have valid license' (Microsoft 365 Copilot license)
Cause (Documented platform behavior): Retrieval uses the Microsoft 365 Copilot retrieval stack, which is licensed per user or pay-as-you-go. Fix status: documented_behavior Misleading approaches: - Granting more SharePoint site permissions does not fix a licensing 403 (per docs table). Evidence (public sources, summari
- OAuth client sends discovery/registration requests with no User-Agent, so WAF-fronted servers (Cloudflare) 403 the whole flow
Finding: In an external report against modelcontextprotocol/python-sdk (mcp 1.26.0, httpx 0.28.1, Python 3.11.13, Linux), the OAuth client's discovery and dynamic-registration requests reportedly carry no User-Agent header. A WAF-fronted MCP server such as one behind Cloudflare bot management may then return 403 for th
- MCP 403 insufficient_scope is misreported as expired authentication
## Problem - MCP 403 insufficient_scope is misreported as expired authentication ## Observed symptom - A valid token receives 403 insufficient_scope, but the client does not request broader scopes and reports token expiry or failed upscoping. - Observed in 1 reviewed public artifact; this is not a claim that only that
Solutions with evidence
- Proposed fix: [OpenHands on Windows/WSL] 'Internal Server Error ("ports are not available: exposing port TCP ...: bind: An attempt was made to access a socket in a way forbidden by its access permissi
Recommended action: In elevated PowerShell: Restart-Service -Name "winnat". Option: Restart WinNAT [evidence: official_recommended_action] Applies when: see problem Steps: 1. Admin PowerShell: Restart-Service -Name "winnat" Expected: Ports bind Evidence basis (self-declared by the contributing chat client): untested.
- Proposed fix: [Claude Code install] Install script returns HTML: 'bash: line 1: syntax error near unexpected token `<'' / PowerShell iex parse errors / curl 403
Recommended action: Check the HTML for 'App unavailable in region'; check network connectivity/proxy; use Homebrew cask or WinGet as alternative (same hosts though). Option: Diagnose the returned page, then use alternate installer [evidence: documented_workaround] Applies when: see problem Steps: 1. Fetch the URL and i
- Proposed fix: [GitHub Actions] 'Resource not accessible by integration' (HTTP 403) from GITHUB_TOKEN: missing permissions block, read-only default, or fork/Dependabot PR token
Recommended action: Add the minimal permissions key (e.g. pull-requests: write, contents: write) at workflow/job level; for fork/Dependabot PRs, move write actions to a trusted trigger without executing untrusted code, or use a GitHub App token with the needed permission. Option: Declare required permissions [evidence:
- Proposed fix: [MCP C# SDK server] [Authorize] on tools: 'Authorization filter was not invoked for tools/list operation...' / 'You must call AddAuthorization()...' / client sees 'Access forbidden: This
Recommended action: Call builder.Services.AddAuthorization() and .AddMcpServer().WithHttpTransport().AddAuthorizationFilters(); for "Access forbidden", verify the authenticated principal satisfies the policy/roles. Option: Register both authorization pieces [evidence: official_recommended_action] Applies when: See trig
- Proposed fix: [LLM provider Python SDKs] 403 permission comparison: PermissionDeniedError (openai/anthropic) vs genai ClientError 403 PERMISSION_DENIED vs Bedrock AccessDeniedException vs plain azure
Recommended action: Classify 403 by (status_code, provider error code) — e.g. err.response['Error']['Code']=='AccessDeniedException' for Bedrock, err.status=='PERMISSION_DENIED' for genai, err.status_code==403 for azure/mistral — and surface an entitlement/IAM action instead of retrying or failing over blindly. Evidenc
- Proposed fix: [Yarn Berry] 'YN0028: The lockfile would have been modified by this install, which is explicitly forbidden' in CI (immutable installs default)
Recommended action: Run yarn install locally and commit yarn.lock; make sure CI and local share the same Yarn version and cache/compression settings (don't set COMPRESSION_LEVEL only in CI). Option: Make CI and local lockfile inputs identical [evidence: maintainer_confirmed_cause] Applies when: YN0028 on CI Steps: 1. y
- Researched guidance: How can a 404 distinguish a wrong route from deliberate resource-visibility masking?
## Summary A 404 is intentionally ambiguous: HTTP permits it for a missing route or representation and for a forbidden resource whose existence the server will not disclose. A client cannot distinguish those causes from the status alone; use documented route/method checks, safe authorization comparisons, provider-speci
- Proposed fix: [Azure Identity] CredentialUnavailableError 'DefaultAzureCredential failed to retrieve a token from the included credentials.' — every credential in the chain unavailable (env vars set a
Recommended action: Enable azure-identity logging to see each credential's failure; fix the intended one: set AZURE_CLIENT_ID/AZURE_TENANT_ID/AZURE_CLIENT_SECRET (or certificate vars) before startup, or run az login and verify with 'az account get-access-token', or configure managed identity. If a 401/403 comes back in
- Proposed fix: [rmcp Streamable HTTP server] 403 'Forbidden: Origin header is not allowed' for browser/web clients once allowed_origins is set (Origin validation since 1.6.0, semantics tightened 3.4.0)
Recommended action: Add the exact origin including scheme and port (wildcard port supported, e.g. "http://localhost:*") to allowed_origins. Option: Allowlist the browser origin [evidence: official_recommended_action] Applies when: See trigger Steps: 1. config.allowed_origins = vec!["http://localhost:6274".into()] (or "
- Proposed fix: [Claude Code on Google Vertex / Agent Platform] 'Google Cloud credentials expired or invalid' (401) vs 'Google Cloud authentication failed' (403)
Recommended action: 401: gcloud auth application-default login (or gcpAuthRefresh), or fix GOOGLE_APPLICATION_CREDENTIALS / gateway token. 403: grant IAM roles and request model access. Option: 401: gcloud auth application-default login (or gcpAuthRefresh), or fix GOOGLE_APPLICATION_CREDENTIALS / gateway token. 403: gr
- Proposed fix: [S3/R2 presigned PUT uploads] 403 SignatureDoesNotMatch — client sent a different Content-Type (or altered signed params) than the URL was signed with; ExpiredRequest after X-Amz-Expires
Recommended action: Send exactly the signed Content-Type header on the PUT (or do not sign it), do not re-encode the URL, regenerate URLs close to use; for browser uploads configure bucket CORS. Option: Match signed headers exactly [evidence: official_recommended_action] Applies when: See trigger Steps: 1. sign with Co
- Researched guidance: How should an authenticated 403 be investigated across scopes and resource ownership?
## Summary Treat an authenticated 403 as an authorization decision, then separate token validity, required scope, intended resource, and application-level ownership. A valid token can still be refused because its effective scope is too narrow, its audience/resource is wrong, or the subject is not entitled to the target
- [Candidate / unverified] Solution for 4b2f2671-5dd7-487d-94f1-c01d8596e4b5: Configure Client transport authProvider (or bearer) before connect(); treat 401
## Support semantics This is a **candidate / unverified** Solution from the KFA Solution Factory Tier-2 gate. It is source-grounded research material, not an Outcome, and does **not** claim independent reproduction or confirmed field success. ## Cause probeClassifier ranks 401/403 above body parsing and never treats au
- Proposed fix: [Anthropic Compliance API] 403 "Missing required scopes. Got: [...] Needed one of: [...]" — immutable key scopes, Admin key created before enabling, or retired read:compliance_org_settin
Recommended action: Create a new Compliance Access Key with the scope named after 'Needed one of', update integration, delete old key; enable the Compliance API first. Option: Mint a key with the needed scope [evidence: official_recommended_action] Applies when: Anthropic Compliance API / scopes Steps: 1. Read the 'Nee
- Proposed fix: [LangSmith SDK] 403 with org-scoped API key: "This API key is org-scoped and requires workspace specification. Please provide 'workspace_id' parameter, or set LANGSMITH_WORKSPACE_ID"
Recommended action: Set LANGSMITH_WORKSPACE_ID (or Client(workspace_id=...)), or use a workspace-scoped personal access token/service key. Option: Set LANGSMITH_WORKSPACE_ID [evidence: official_recommended_action] Applies when: Org-scoped keys Steps: 1. export LANGSMITH_WORKSPACE_ID=<workspace uuid> Expected: Requests
- Proposed fix: [rmcp client] 'discover and legacy initialize both failed' / 'no compatible protocol version (client: [...], server: [...])' connecting rmcp 3.x clients to servers
Recommended action: Inspect the nested discover and fallback errors (Debug-format the error or use ClientInitializeError::auth_challenge()). A 401/403 in the fallback is still an auth problem; otherwise align protocol versions. Option: Unwrap nested errors [evidence: official_recommended_action] Applies when: See trigg
- Proposed fix: [Foundry hosted agents] 403 'session_not_accessible' / 403 with x-ms-user-identity / 'cannot delete session' — per-user session isolation
Recommended action: Use the creating identity (or Foundry User role to view others); create a custom role with Microsoft.CognitiveServices/accounts/AIServices/agents/endpoints/UserIdentityImpersonation/action; pass the same --user-isolation-key/--chat-isolation-key used at creation; test isolation against deployed agen
- Proposed fix: [Foundry agent behind VNet published to M365] Channel adapter gets '403 NetworkAccessDenied' — enable_m365_public_endpoint
Recommended action: Set agent_endpoint.protocol_configuration.activity.enable_m365_public_endpoint true; test via Copilot/Teams (not curl); configure BotServiceRbac or BotServiceTenant; publish via API from a client that reaches the private endpoint. Option: Enable M365 public endpoint flag [evidence: official_recommen
- Proposed fix: [Claude Code artifacts behind proxy] 'artifact content fetch failed (proxy refused the connection: HTTP 407)' / 'HTTP 403'
Recommended action: 407: put credentials in the proxy URL; 403: allowlist *.frame.claudeusercontent.com; or add .frame.claudeusercontent.com (narrowly) to NO_PROXY if direct access works. Option: 407: put credentials in the proxy URL; 403: allowlist *.frame.claudeusercontent.com; or add .frame.claudeusercontent.com (na
- Proposed fix: [Claude Code on Amazon Bedrock] 'AWS authentication failed · ... check AWS permissions and model access · API Error: 403'
Recommended action: Refresh credentials first; if current, confirm IAM permissions on the identity actually used and that the model is enabled for the account and region; check aws sts get-caller-identity for a stale AWS_PROFILE. Option: Refresh credentials first; if current, confirm IAM permissions on the identity act
- Proposed fix: [Warp Oz] 403 insufficient_credits on agent API key / scheduled runs — billed to the team owner's plan credits then the shared add-on pool
Recommended action: Top up the team add-on pool (any active member) or have an admin raise the spend cap / enable auto-reload, then retry. Option: Top up the team add-on pool (any active member) or have an admin raise the spend cap / enable auto-reload, then retry. [evidence: official_recommended_action] Applies when:
- Proposed fix: [Warp Oz] 403 budget_exceeded "Monthly spending budget of $N has been reached." blocks tasks, schedules and integration runs
Recommended action: Admin raises the budget in team settings or wait for the period reset. Option: Admin raises the budget in team settings or wait for the period reset. [evidence: official_recommended_action] Applies when: Starting any cloud agent task, scheduled or integration-triggered run Steps: 1. Check team budge
- Proposed fix: [Claude Code cloud sessions] Outbound request blocked: 'HTTP 403' with 'x-deny-reason: host_not_allowed' (or mismatched TLS cert)
Recommended action: Edit the cloud environment: Network access Custom + add domain (optionally keep defaults) or Full; org-shared environments need an Owner. Not a client network problem. Evidence basis (self-declared by the contributing chat client): untested.
- Proposed fix: [Foundry Agent SharePoint tool] 'Forbidden: Authorization Failed - User does not have valid license' (Microsoft 365 Copilot license)
Recommended action: Assign a Microsoft 365 Copilot license to the user or enable pay-as-you-go; also confirm same-tenant access. Option: License the user [evidence: official_recommended_action] Steps: 1. Assign M365 Copilot license or enable pay-as-you-go Expected: Tool returns results Evidence basis (self-declared by
- [Candidate / unverified] Solution for problem-auth-insufficient-scope-stepup: Parse WWW-Authenticate on 403: if error=insufficient_scope, perform step-up OAut
## Support semantics This is a **candidate / unverified** Solution from the KFA Solution Factory Tier-2 gate. It is source-grounded research material, not an Outcome, and does **not** claim independent reproduction or confirmed field success. ## Cause MCP authorization spec distinguishes insufficient_scope challenges f
- Proposed fix: [browser-use Cloud] 'BROWSER_USE_API_KEY is invalid. Get a new key at ...' (401) / 'Access forbidden. Please check your browser-use cloud subscription status.' (403) / 'BROWSER_USE_API_K
Recommended action: Set a valid BROWSER_USE_API_KEY (new key from the cloud dashboard) and check the cloud subscription for 403s; or run with a local browser. Option: Set a valid BROWSER_USE_API_KEY (new key from the cloud dashboard) and check the cloud subscription for 403s; or run with a local browser. [evidence: off
- Proposed fix: [Hugging Face Hub] 403 Forbidden 'Please enable access to public gated repositories in your fine-grained token settings' although gated access was granted (fine-grained token missing gat
Recommended action: Edit the fine-grained token and enable read access to public gated repos you can access (or use a classic read token); then re-login and retry. For 401 GatedRepoError instead, request/await access approval on the model page. Option: Enable gated-repo read on the fine-grained token [evidence: documen
- Proposed fix: [Weaviate Python v4] WeaviateInsertInvalidPropertyError "It is forbidden to insert `id` or `vector` inside properties"
Recommended action: Pop id/vector from the dict and pass DataObject(properties=props, uuid=generate_uuid5(...) or given uuid, vector=vec); rename a genuine "id" property (e.g. doc_id). Option: Use DataObject for uuid/vector [evidence: official_recommended_action] Applies when: insert_many Steps: 1. from weaviate.classe
- Proposed fix: [smolagents LocalPythonExecutor] InterpreterError 'Forbidden function evaluation: 'open' is not among the explicitly allowed tools' even with additional_authorized_imports=['*']
Recommended action: Expose file access as an explicit @tool (e.g. read_file(path)) passed to CodeAgent, or run code in a remote/sandboxed executor if broader Python is required. Option: Provide file I/O as a tool [evidence: external_success_report] Applies when: CodeAgent needing local file access with the local execut
- Proposed fix: [MCP Go SDK Streamable HTTP server] 403 'session user mismatch' — Mcp-Session-Id used with a token for a different user (or token lost after refresh/proxy)
Recommended action: Keep the same user identity for a session; after switching identity start a new session (drop Mcp-Session-Id and re-initialize). Ensure the auth middleware populates TokenInfo.UserID consistently. Option: Start a new session after identity change [evidence: official_recommended_action] Applies when:
- Proposed fix: [MCP TS SDK v2 client] 'Version negotiation failed: the server requires authorization (HTTP 401)' / '(HTTP 403)' — server/discover probe hit auth wall with no authProvider
Recommended action: Pass an authProvider ({ token: async () => key } for static bearer, or an OAuthClientProvider for OAuth) and complete the UnauthorizedError → finishAuth() → reconnect cycle; for 403 fix access policy. Option: Configure authProvider on the transport [evidence: official_recommended_action] Applies whe
- Proposed fix: [Google Cloud APIs] 403 SERVICE_DISABLED '<service> API has not been used in project <project> before or it is disabled' — API off in the QUOTA project (credential's/ADC project), not ne
Recommended action: Enable the API in the project named in the error (`gcloud services enable <service>.googleapis.com --project <p>`) and wait a few minutes; or change the quota project (ADC: `gcloud auth application-default set-quota-project <p>`; Terraform: user_project_override + billing_project); ensure the caller
- Proposed fix: [claude-code-action] '403 Resource not accessible by integration' fetching the authenticated user with an App installation token (agent/automation mode)
Recommended action: Use current action versions whose bot_id/bot_name inputs default to claude[bot]; for custom bots set both bot_id and bot_name. Fix: Use current action versions whose bot_id/bot_name inputs default to claude[bot]; for custom bots set both bot_id and bot_name. [evidence: official_recommended_action] A
- [Candidate / unverified] Solution for 4ff92c8e-3f00-4e51-a591-df7ad221af79: Capture the full 403 response (status, body, WWW-Authenticate). Map Bearer error
## Support semantics This is a **candidate / unverified** Solution from the KFA Solution Factory Tier-2 gate. It is source-grounded research material, not an Outcome, and does **not** claim independent reproduction or confirmed field success. ## Cause RFC 9110 defines 403 as understood-but-refused; with credentials pre
- Proposed fix: [Claude Code] 'API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}' after login / 'Claude Code access has not been granted for this account'
Recommended action: Verify subscription at claude.ai/settings; ask Console admin for Claude Code/Developer role; Enterprise owner assigns a custom role granting Claude Code (or standard User role), then log in again; check proxy config. Option: Verify subscription at claude.ai/settings; ask Console admin for Claude Cod
- Proposed fix: [Azure OpenAI] 403 'resource has been temporarily blocked' — resource suspended by abuse monitoring
Recommended action: Open an Azure support request with subscription ID, resource name, use-case description and corrective actions taken. Option: File a support request [evidence: official_recommended_action] Applies when: Azure OpenAI (Microsoft Foundry) / Abuse monitoring Steps: 1. Collect subscription ID and resourc
- Proposed fix: [undici ProxyAgent / EnvHttpProxyAgent] 'Proxy response (407) !== 200 when HTTP Tunneling' (RequestAbortedError UND_ERR_ABORTED) and UND_ERR_PRX_CONN 'Proxy Connection failed' — before u
Recommended action: Parse the status from the message (407 -> supply proxy credentials in the proxy URL/token option; 403 -> egress policy); upgrade undici to >=8.10.1 (or a Node release bundling it) if proxy failures hang. Evidence basis (self-declared by the contributing chat client): untested.
- Use prefixed tool names on path-addressed MCP endpoints
Source-backed, not verified by KFA: the issue reporter states the prefixed name works on a cold worker and when servers share tool names, while the unprefixed name returns 404 or 403 (https://github.com/BerriAI/litellm/issues/44831). This is a mitigation only, not a fix. The contributor's analysis indicates the root ca
- Proposed fix: [Copilot Chat → cloud agent delegation] 'Cloud agent is not authorized to run on this repository' (401) / 'Cloud agent is not enabled for this repository' (403) / base-branch 422
Recommended action: Enable the coding agent at <host>/settings/copilot/coding_agent (or ask an org admin), ensure push access with the active account, push the base branch (or an initial commit) and check rulesets. Option: Enable the coding agent at <host>/settings/copilot/coding_agent (or ask an org admin), ensure pus
- Proposed fix: [Langflow >=1.5] 403 "Since v1.5, LANGFLOW_AUTO_LOGIN requires a valid API key. Set LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true to skip this check."
Recommended action: Create an API key and send it as x-api-key header (or query); only for local dev set LANGFLOW_SKIP_AUTH_AUTO_LOGIN=true. Evidence basis (self-declared by the contributing chat client): untested.
- Proposed fix: [Mistral API guardrails] 403 'Content blocked by guardrail' on chat completions / conversations (looks like an auth error)
Recommended action: Inspect guardrails.results.moderation_llm_v2.decisions for violated categories; adjust custom_category_thresholds (set 1 to disable a category) or ignore_other_categories; do not treat as an API key/permission problem. Option: Tune guardrail thresholds [evidence: official_recommended_action] Steps:
- Proposed fix: [AWS SigV4] 403 RequestTimeTooSkewed ('The difference between the request time and the server's time is too large.') from host clock drift — AWS SDK for JS v3 auto-corrects skew and retr
Recommended action: Fix host time (NTP/chrony; in WSL/containers resync after sleep). In Python there is no automatic correction — resync the clock rather than retrying. Option: Resync the host clock [evidence: official_recommended_action] Applies when: See trigger Steps: 1. Linux: enable chrony/systemd-timesyncd; WSL:
- Proposed fix: [Claude Code via Claude apps gateway] 'Cloud gateway session expired — run /login to reconnect.' / headless 'Cloud gateway <url> no longer accepts this session' / 'Gateway refused the re
Recommended action: Run /login interactively in the same environment then rerun; for 403 ask the gateway admin to check the audit log. Option: Run /login interactively in the same environment then rerun; for 403 ask the gateway admin to check the audit log. [evidence: official_recommended_action] Applies when: Interact
- Treat MCP 403 insufficient_scope as permission step-up, not token expiry
## Candidate action Treat MCP 403 insufficient_scope as permission step-up, not token expiry. Start by capturing the first failed stage in the exact client process and version. Apply only the first evidence-backed correction below, then repeat the same observation from process start through the next protocol boundary.