Troubleshooting Guide
TL;DR: Most issues fall into three categories: endpoint not running (check pause state, nextRunAt, locks), AI not adapting (check hint expiry, response bodies, quota), or authentication problems (check API key, OAuth flow).
Endpoint Issuesβ
Endpoint Not Runningβ
Symptoms: No executions appear in run history
Check pause state:
- Open endpoint details
- Look for "Paused until" field
- If paused, click Resume or wait until the pause time passes
Check nextRunAt:
- View endpoint details
- Check when next run is scheduled
- If far in the future, verify baseline schedule or check for long
maxIntervalMs
Check for stuck lock (_lockedUntil):
If a Scheduler crashed mid-execution, the endpoint may be locked. Locks expire after 30 seconds, but in rare cases:
- Wait 30-60 seconds
- If still stuck, check if the scheduler worker is running
- The endpoint should auto-recover when the lock expires
Check job status:
If the parent job is paused or archived, endpoints won't run.
Endpoint Running Too Frequentlyβ
Symptoms: Runs more often than expected, potentially hitting rate limits
Check active AI interval hint:
- View endpoint details
- Look for "AI Hint" section
- If present, the AI has temporarily changed the interval
- Wait for TTL to expire, or use Clear Hints to revert immediately
Check minIntervalMs:
If set too low, AI can tighten the schedule aggressively.
Check for one-shot hint loop:
If propose_next_time is called repeatedly, the endpoint runs frequently. Check AI analysis sessions for reasoning.
Endpoint Running Too Slowlyβ
Symptoms: Long gaps between executions
Check maxIntervalMs:
This constraint caps how far apart runs can be. If not set, AI can relax the schedule significantly.
Check exponential backoff:
After failures, the interval increases exponentially (up to 32x baseline):
| Failures | Multiplier |
|---|---|
| 0 | 1x |
| 1 | 2x |
| 2 | 4x |
| 3 | 8x |
| 4 | 16x |
| 5+ | 32x |
To reset: use Reset Failures in the UI or API.
Check baseline configuration:
Verify the baseline cron or interval is what you intended.
Endpoint Timing Outβ
Symptoms: Runs fail with timeout errors
Increase timeout:
- Edit endpoint
- Increase
timeoutMs(default: 30 seconds, max: 30 minutes)
Check if your API is slow:
- Look at run durations in history
- If consistently near timeout, your API may need optimization
Endpoint Returning Errorsβ
Symptoms: Runs complete but show failure status
Check run details:
- Click on a failed run
- View error message and response body
- Check HTTP status code
Common causes:
- 401/403: Authentication issue with your endpoint
- 404: Endpoint URL changed
- 500: Your API is returning errors
- Timeout: Request took too long
AI Adaptation Issuesβ
AI Not Adaptingβ
Symptoms: Schedule never changes despite varying conditions
Check if AI hints are active:
- View endpoint details
- Look for "AI Hint" section
- If empty, AI hasn't proposed changes
Check hint expiry:
Hints have TTLs (default: 60 minutes). If expired:
- AI hasn't re-analyzed yet
- Or AI decided no changes needed
Verify response bodies include metrics:
AI needs data to analyze. Structure responses with:
{
"queue_depth": 45,
"error_rate_pct": 1.2,
"healthy": true
}
If responses are empty or lack metrics, AI can't detect patterns.
Check analysis sessions:
View recent AI analysis for the endpoint:
- Look for reasoning explaining decisions
- Check token usage (quota issues)
- Verify
next_analysis_atis reasonable
Check quota limits:
If quota is exceeded, AI analysis is skipped. Check your plan limits.
AI Making Bad Decisionsβ
Symptoms: AI tightens when it should relax, or vice versa
Use constraints to limit AI range:
- Set
minIntervalMsto prevent too-frequent runs - Set
maxIntervalMsto prevent too-infrequent runs - Constraints are hard limits AI cannot override
Clear hints to revert:
Use Clear Hints to immediately return to baseline. Then:
- Review AI analysis sessions for reasoning
- Consider adjusting response body data
- Add better thresholds to guide AI
Review AI reasoning:
Each analysis session logs the AI's reasoning. Look for:
- What data it saw
- What trends it detected
- Why it made its decision
AI Analysis Not Runningβ
Symptoms: No recent analysis sessions
Check if endpoint has recent runs:
AI only analyzes endpoints that ran recently.
Check AI Planner worker:
The AI Planner runs as a separate service. Verify it's running.
Check AI re-analysis schedule:
AI controls when it next analyzes. A stable endpoint might not be re-analyzed for hours.
AI Oscillating Between Intervalsβ
Symptoms: Endpoint interval changes frequently, alternating between fast and slow
Causes:
- Response data is volatile (instantaneous values that spike)
- Constraints allow too wide a range
- AI hints expiring too quickly
Solutions:
- Add/tighten constraints:
{
"minIntervalMs": 30000,
"maxIntervalMs": 120000
}
A 4x range limits oscillation even with volatile AI decisions.
- Return smoothed metrics in response:
{ "avg_error_rate_5min": 2.3 } // Instead of instant rate
- Request stability in description:
"Monitors volatile metrics. Prioritize stability - don't overreact
to momentary spikes. Only adjust for sustained state changes."
- Include trend signals:
{ "trend": "stable", "within_normal_range": true }
See Stability and Oscillation Prevention for details.
AI Not Following My Descriptionβ
Symptoms: AI adapts differently than your description specifies
Check response body data:
AI uses both description AND response data. If response data strongly suggests a different action, AI may prioritize that.
Be explicit in description:
Use clear phrases:
- β "Poll LESS when load is HIGH" (explicit inverse)
- β "Adapt to load" (ambiguous)
Add thresholds:
"Poll more frequently when error_rate exceeds 5%."
Check constraints:
Constraints override everything. If you describe "poll every 10 seconds" but minIntervalMs is 30000, the constraint wins.
Authentication Issuesβ
API Key Not Workingβ
Symptoms: 401 Unauthorized responses
Check header format:
# Correct
curl -H "x-api-key: cron_abc123..."
# Wrong (case-sensitive)
curl -H "X-API-Key: cron_abc123..."
Check key is active:
- Go to Settings β API Keys
- Verify the key hasn't been revoked
- Check key permissions
Check key hasn't expired:
API keys may have expiration dates set at creation.
OAuth Flow Failingβ
Symptoms: Can't complete device authorization
Token polling returns "pending":
This is normalβkeep polling until the user completes authorization in the browser.
Authorization denied:
The user clicked "Deny" instead of "Approve". Restart the flow.
Token expired:
Device codes expire after 30 minutes. Restart the flow.
Session Issuesβ
Symptoms: Logged out unexpectedly, session errors
Clear cookies and retry:
- Log out completely
- Clear browser cookies for the Cronicorn domain
- Log in again
MCP Server Issuesβ
Can't Connectβ
Symptoms: MCP server doesn't respond or errors on startup
Check installation:
npx -y @cronicorn/mcp-server --version
Check configuration path:
Verify MCP config is in the correct location for your assistant.
OAuth Not Workingβ
Symptoms: Device flow fails or no browser opens
Manual verification:
If the browser doesn't open automatically:
- Copy the URL from the terminal output
- Open it manually in your browser
- Complete authorization
Check network:
The MCP server needs internet access to reach the Cronicorn API.
Credentials Not Persistingβ
Symptoms: Must re-authorize every time
Check file permissions:
Credentials are stored locally. Verify the MCP server can write to its config directory.
Reset credentials:
npx -y @cronicorn/mcp-server logout
npx -y @cronicorn/mcp-server login
Self-Hosting Issuesβ
For detailed self-hosting troubleshooting organized by component (database, migrator, API, web app, scheduler, AI planner, Docker), see the dedicated Self-Hosting Troubleshooting guide.
Getting More Helpβ
Useful Diagnosticsβ
When reporting issues, include:
- Endpoint ID
- Recent run IDs
- AI analysis session IDs
- Error messages from logs
Checking System Stateβ
Via UI:
- Dashboard shows overall health
- Endpoint details show current state
- Run history shows execution patterns
Via API:
# Get endpoint health
curl -H "x-api-key: KEY" \
https://cronicorn.com/api/endpoints/ID/health
# Get recent runs
curl -H "x-api-key: KEY" \
https://cronicorn.com/api/endpoints/ID/runs?limit=10
Via MCP:
"Show me the health of my main-api endpoint"
"What's the run history for payment-processor?"
See Alsoβ
- Quick Start - Basic setup guide
- How Scheduling Works - Understand scheduling logic
- How AI Adaptation Works - Understand AI decisions
- Configuration and Constraints - Setting up constraints