Troubleshooting
Common Issues
Startup Issues
Missing Tracker API Key
Missing Tracker API Key
Symptom: Risoluto exits with
missing_tracker_api_key on startup.Cause: tracker.api_key resolves to an empty value.Fix: Run the setup wizard at /setup and re-enter your Linear API key, or set the environment variable:Missing Codex Auth
Missing Codex Auth
Symptom:
account/read failure during startup.Cause: The Codex app-server cannot authenticate with the configured provider.Fix: Verify your auth mode:| Mode | Check |
|---|---|
| API Key | echo $OPENAI_API_KEY returns a valid key |
| Codex Login | Run codex login and re-upload auth.json via the setup wizard |
| Browser PKCE | Re-authenticate via the setup wizard at /setup |
Port already in use
Port already in use
Symptom:
EADDRINUSE: address already in use :::4000Cause: Another process is bound to the port.Fix:Master Key Mismatch
Master Key Mismatch
Symptom:
secrets.enc decryption failure on startup.Cause: The MASTER_KEY environment variable doesn’t match the key used to encrypt secrets.Fix: Use the correct master key, or factory reset:Agent Failures
Container OOM (Out of Memory)
Container OOM (Out of Memory)
Symptom: Agent exit code 137, Verify OOM status:
OOMKilled=true in container inspect.Cause: The agent exceeded the container memory limit.Fix: Increase the memory allocation:Agent stalls (no progress)
Agent stalls (no progress)
Symptom: Issue stays in Reduce the stall timeout for faster detection:
agent_running state with no new events.Cause: The agent is stuck — infinite loop, network timeout, or model API hang.Fix: Risoluto auto-kills stalled agents after agent.stallTimeoutMs (default: 5 minutes). To kill manually:Required MCP Startup Failure
Required MCP Startup Failure
Symptom:
thread/start failed because a required MCP server did not initializeCause: This is a Codex runtime error, not a Risoluto bug. The agent’s MCP configuration references a server binary that is missing or failing inside the container.Fix: Check codex.sandbox.extraMounts and ensure all required MCP server binaries are available inside the container. Verify with:Agent exhausted all retries
Agent exhausted all retries
Symptom: Issue marked as failed after 5 attempts.Cause: The agent could not complete the task within the retry budget.Fix: Inspect the attempt timeline to understand why:Options:
- Simplify the issue description
- Increase
agent.maxContinuationAttempts - Switch to a more capable model via per-issue override
- Force a retry: transition the issue back to the trigger state
Docker Problems
Docker daemon not running
Docker daemon not running
Symptom: Verify:
Cannot connect to the Docker daemonFix:docker info should complete without errors.Sandbox image not found
Sandbox image not found
Symptom: If using a custom image, verify it exists:
No such image: risoluto-codex:latestFix: Build the sandbox image:Permission denied on Docker socket
Permission denied on Docker socket
Symptom:
permission denied while trying to connect to the Docker daemon socketFix: Add your user to the docker group:Network Issues
Linear API connection failures
Linear API connection failures
Symptom: Poll errors with Check Linear Status for outages.
ECONNREFUSED or ETIMEDOUT to api.linear.app.Cause: Network connectivity or DNS issues, or Linear API outage.Fix:OpenAI API rate limiting
OpenAI API rate limiting
Symptom: Agents fail with 429 status codes.Cause: Too many concurrent agents hitting your API rate limit.Fix: Reduce concurrency:
Invalid or expired credentials
Invalid or expired credentials
Symptom: 401/403 errors from Linear, OpenAI, or GitHub APIs.Cause: Credentials have expired or been revoked.Fix: Re-enter credentials via the setup wizard at
/setup. Risoluto validates credentials before storing them and surfaces the upstream error message.Linear Integration
Issues not being picked up
Issues not being picked up
Symptom: In Progress issues in Linear are not dispatched by Risoluto.Cause: The issue’s project or state doesn’t match Risoluto’s configuration.Fix:Ensure the issue belongs to the configured project and is in a state that maps to the trigger state.
Webhook events not arriving
Webhook events not arriving
Symptom: Webhook is configured but Risoluto doesn’t react to issue changes.Cause: Webhook URL is unreachable from Linear’s servers, or the webhook secret doesn’t match.Fix: Verify webhook delivery in Linear’s webhook settings (Settings > API > Webhooks). Check that the webhook URL is publicly reachable (ngrok, Cloudflare Tunnel, or public IP).
Diagnostic Commands
System state
Issue inspection
CLI log inspector
Container inspection
Environment Variables
| Variable | Default | Description |
|---|---|---|
LOG_LEVEL | info | Pino log level (debug for verbose output) |
RISOLUTO_LOG_FORMAT | logfmt | Log format: logfmt or json |
SENTRY_DSN | — | Error tracking endpoint |
LINEAR_API_KEY | — | Linear API key (alternative to wizard setup) |
OPENAI_API_KEY | — | OpenAI API key (alternative to wizard setup) |
GITHUB_TOKEN | — | GitHub PAT for PR creation |
What’s Next
Observability
Prometheus metrics, SSE events, audit logs, and data persistence.
FAQ
Common questions about models, privacy, and configuration.
Monitoring Stack
Set up Prometheus and Grafana for dashboards and alerting.
Security
Secure the API with write tokens and bind address controls.