Automation troubleshooting
Use this page when scheduled work is missing, delayed, or delivering to the wrong place. It covers the gateway scheduler, task activity logs, heartbeat behavior, and outbound delivery checks.Fast check ladder
In the browser UI, check these first:- Agents > selected Agent > Tasks: task enabled, next run, last run, and run details.
- Agents > Channels: delivery channel is connected and routed.
- Usage: token usage appears when a task actually ran a model call.
- Logs: gateway log tail for scheduler, channel, or model errors.
Task not firing
fased task statusreports the scheduler enabled and a futurenextWakeAtMs- the task is enabled and its schedule parses cleanly
- recent task runs show
okor a clear skip reason
cron: scheduler disabled; jobs will not run automatically- the scheduler is disabled in config or via env
cron: timer tick failed- the scheduler loop threw; inspect surrounding logs
reason: not-due- you manually called
task runwithout forcing a not-yet-due task
- you manually called
- expired queue lease in
task status- use
fased task clear-stale <runId>to requeue that run
- use
- failed, blocked, canceled, or recovered queue run
- use
fased task retry-run <runId>after fixing the cause
- use
- active run that should stop
- use
fased task cancel-run <runId>
- use
- unclear run source or delivery path
- use
fased task run-show <runId>to inspect queue steps, adapter/model, delivery, recovery actions, and transcript path
- use
Task ran but no delivery happened
- run state is
ok - the task has a real delivery mode and target
- the channel probe reports the target channel connected
delivery.mode = none- the task was only meant to run internally
- missing or invalid
channel/to- the run can succeed while outbound delivery is skipped
- channel auth failures such as
unauthorized,missing_scope, orForbidden- credentials or channel permissions are blocking delivery
Heartbeat feels silent
- heartbeat is enabled with a non-zero interval
- the last result is
ran, or the skip reason makes sense
reason=quiet-hours- the current time is outside
activeHours
- the current time is outside
requests-in-flight- the main lane is busy and heartbeat deferred
empty-heartbeat-fileHEARTBEAT.mdhad nothing actionable and no queued event needed attention
alerts-disabled- the heartbeat ran, but outbound visibility settings suppressed the message
Timezone and active-hours mistakes
- if
agents.defaults.userTimezoneis unset, heartbeat falls back to the host timezone unlessactiveHours.timezoneis set explicitly - task cron expressions without
--tzuse the gateway host timezone - ISO timestamps without a timezone are treated as UTC for
atschedules
- tasks run at the wrong wall-clock hour after a host timezone change
- heartbeat stays quiet during your daytime because
activeHours.timezoneis wrong