hermes - 💡(How to fix) Fix Feature: support per-cron reasoning effort overrides

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Cron jobs should support a per-job reasoning / thinking-level override, rather than inheriting only the global agent.reasoning_effort from config.yaml.

Root Cause

  • A lightweight hourly email scan may only need low or medium reasoning to classify recent inbox items.
  • A morning briefing or travel-planning job may benefit from high reasoning because it synthesizes calendar, email, weather, and trip context.
  • A simple reminder/check-in job may not need deep reasoning at all.

Code Example

# cron/scheduler.py
effort = str(_cfg.get("agent", {}).get("reasoning_effort", "")).strip()
reasoning_config = parse_reasoning_effort(effort)

---

reasoning_effort: low | medium | high | xhigh | minimal | none

---

hermes cron create "0 * * * *" \
  --model gpt-5.5 \
  --provider openai-codex \
  --reasoning-effort medium

hermes cron edit <job_id> --reasoning-effort high

---

{
  "model": {"provider": "openai-codex", "model": "gpt-5.5"},
  "reasoning_effort": "medium"
}
RAW_BUFFERClick to expand / collapse

Summary

Cron jobs should support a per-job reasoning / thinking-level override, rather than inheriting only the global agent.reasoning_effort from config.yaml.

Motivation

Different scheduled jobs have very different reasoning requirements:

  • A lightweight hourly email scan may only need low or medium reasoning to classify recent inbox items.
  • A morning briefing or travel-planning job may benefit from high reasoning because it synthesizes calendar, email, weather, and trip context.
  • A simple reminder/check-in job may not need deep reasoning at all.

Today, LLM-driven cron jobs can pin provider and model, but reasoning effort is effectively global. That creates an awkward tradeoff: either run all cron jobs with high thinking and pay the latency/cost tax, or lower the global setting and degrade the jobs that actually need deeper synthesis.

Current behavior

The cron scheduler reads reasoning from global config:

# cron/scheduler.py
effort = str(_cfg.get("agent", {}).get("reasoning_effort", "")).strip()
reasoning_config = parse_reasoning_effort(effort)

Job definitions support fields like provider, model, base_url, enabled_toolsets, and workdir, but there does not appear to be a first-class per-job reasoning_effort override.

Proposed solution

Add a per-cron-job field such as:

reasoning_effort: low | medium | high | xhigh | minimal | none

Resolution order could be:

  1. job.reasoning_effort, if set
  2. global agent.reasoning_effort
  3. provider/model default behavior

This should be supported by both CLI and API/tool creation/update flows, e.g.:

hermes cron create "0 * * * *" \
  --model gpt-5.5 \
  --provider openai-codex \
  --reasoning-effort medium

hermes cron edit <job_id> --reasoning-effort high

And in the cron tool schema/API:

{
  "model": {"provider": "openai-codex", "model": "gpt-5.5"},
  "reasoning_effort": "medium"
}

Acceptance criteria

  • LLM-driven cron jobs can store a per-job reasoning effort value.
  • Scheduler uses job.reasoning_effort before falling back to agent.reasoning_effort.
  • hermes cron list / cron inspection displays the effective or configured reasoning effort.
  • hermes cron create and hermes cron edit support setting/clearing the value.
  • Tool/API-based cron creation and update support the same field.
  • Existing jobs remain backward compatible and continue to inherit the global setting when unset.
  • Script-only no_agent jobs ignore the field or clearly mark it as not applicable.

Notes

This mirrors the existing per-job model/provider override: scheduled tasks need both model selection and thinking-budget selection to be tunable at the job level.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING