diff --git a/website/docs/user-guide/features/cron.md b/website/docs/user-guide/features/cron.md index a49dc7ec03..84927502b0 100644 --- a/website/docs/user-guide/features/cron.md +++ b/website/docs/user-guide/features/cron.md @@ -26,7 +26,7 @@ All of this is available to Hermes itself through the `cronjob` tool, so you can - **Per-job pin** — set by *you* via the dashboard, `hermes cron create/edit --model … --provider …`, or by editing `~/.hermes/cron/jobs.json`. Once set, it sticks until you change it. The agent's `cronjob` tool cannot set or change per-job models — inference pins are user-owned. - **`cron.model` / `cron.model_provider`** — a cron-fleet default: every unpinned job runs on this model, independent of your chat model. Set it once (`hermes config set cron.model `) and switching your chat model with `hermes model` or `/model` never touches your cron fleet. -- **Global default** — only when neither of the above is set does a job follow `hermes model`. Hermes **snapshots** the provider and model at creation, and that snapshot is the job's effective pin: if you later switch the global default (`hermes model`, `/model`, `hermes config set model.default …`), the job **keeps running on the model and provider it was created under** and logs one INFO line per run noting the difference. A global model change never stops a scheduled job, and an unattended job never silently inherits a switch to a paid provider/model (#44585). To move a job to the new default, pin it (`hermes cron edit --provider --model `) or set `cron.model` to move the whole fleet at once. Jobs created before snapshots existed keep following the live global default. +- **Global default** — only when neither of the above is set does a job follow `hermes model`. Hermes **snapshots** the provider and model at creation, and that snapshot is the job's effective pin: if you later switch the global default (`hermes model`, `/model`, `hermes config set model.default …`), the job **keeps running on the model and provider it was created under** and logs one INFO line per run noting the difference. A global model change never stops a scheduled job, and an unattended job never silently inherits a switch to a paid provider/model (#44585). To move a job to the new default, **resnap** it (`hermes cron resnap `, or `--all` for every unpinned job) so it adopts the current default while staying unpinned, pin it (`hermes cron edit --provider --model `), or set `cron.model` to move the whole fleet at once. Jobs created before snapshots existed keep following the live global default. Whichever provider a job resolves to, its provider-specific request settings (e.g. `request_overrides` such as `extra_body`/`extra_headers` for custom providers) carry into the scheduled run just like an interactive session. @@ -114,6 +114,17 @@ hermes config set cron.model # every unpin keep their original model so you can decide deliberately. Stored snapshots are refreshed whenever you edit a job's provider, model, or base URL. +Resnapping refreshes an unpinned job's stored snapshot to the current global resolution without +pinning it, so it keeps tracking future changes: + +```bash +hermes cron resnap # one job +hermes cron resnap --all # every unpinned agent job +``` + +The agent-facing `cronjob` tool accepts the same action (`action=resnap job_id=` or +`action=resnap all=true`). Pinned axes and `no_agent` script jobs are left untouched. + ## Skill-backed cron jobs A cron job can load one or more skills before it runs the prompt.