Skip to content

First-Run Troubleshooting

Use this page when the Get Started path fails before your first protected call or first SDK integration succeeds. For production incidents and deeper operational diagnosis, use Troubleshoot by Symptom.

Run:

Terminal window
caracal status --ready --json

On Windows PowerShell:

Terminal window
caracal status --ready --json
SymptomCheck
Docker command failsConfirm Docker Desktop or Docker Engine is running and docker compose version succeeds.
A service is not readyWait for the dependency named in the JSON output, then rerun readiness.
Ports are already in useStop the conflicting local process or change the runtime port configuration before starting Caracal.
Stack state looks staleRun caracal down, then caracal up. Use caracal purge only when you intentionally want to remove local state.
SymptomCheck
CARACAL_CONFIG is missingSet it to the profile path shown by guided setup.
Profile path is wrongOpen the generated TOML file and confirm it matches the current zone, application, Gateway, STS, and secret-file path.
Secret file is rejectedEnsure the secret file exists and is readable only by the current user.
SDK cannot load configurationStart the process from a shell that has CARACAL_CONFIG set, or pass the profile path using the SDK-supported configuration mechanism.

Linux and macOS:

Terminal window
export CARACAL_CONFIG=/path/to/caracal.toml

Windows PowerShell:

Terminal window
$env:CARACAL_CONFIG = "C:\path\to\caracal.toml"

If guided setup does not write files:

  1. Copy the generated TOML profile from the result view.
  2. Save it at the profile path shown by the Console.
  3. Copy the one-time app client secret into the secret-file path shown by the Console.
  4. Restrict the secret file so only the current user can read it.
  5. Rerun the first-success command from the result view.

The app client secret is shown once for newly created apps. If you lose it, create a new secret from the Console and update the profile.

An STS 403 means the workload authenticated but did not receive a mandate.

CheckFix
Active policy setActivate the starter policy set created by guided setup.
Resource IDUse the resource ID from the guided setup result view.
ScopesRequest only scopes covered by the starter policy.
App secretRegenerate the app secret if the configured secret file no longer matches the app.
Audit request IDOpen Console audit or explain with the request ID to see the policy diagnostic.

A Gateway 403 means the Gateway rejected the request before forwarding it upstream.

CheckFix
Authorization headerSend Authorization: Bearer <Caracal access token>.
Resource headerSend X-Caracal-Resource with the resource ID from guided setup.
Token freshnessRerun the workload to obtain a fresh short-lived mandate.
RevocationConfirm the session, app, or delegation edge was not revoked.
Route bindingConfirm the resource has the Gateway route and upstream URL you intended.
SymptomCheck
Connection refusedThe upstream service is not listening, or the Gateway cannot reach that host and port.
DNS failureUse a hostname visible from the Gateway container, not only from the host shell.
Demo upstream missingStart caracalDemoUpstream on the caracalData Docker network or use your own reachable service.
Wrong pathUse the first request path from the Console result view before trying custom paths.
CheckFix
Wrong request IDCopy the request ID from the STS, Gateway, SDK, or Console output.
Wrong zoneSelect the zone used by guided setup.
Request never reached STS or GatewayConfirm the workload used the generated profile and the Gateway URL from that profile.
Audit ingestion lagWait briefly and refresh the Console audit view.

After the first run succeeds, continue with Tutorials or the language-specific SDK guides.