Skip to content

feat: cron agents can suppress delivery with [SILENT] response#1833

Merged
teknium1 merged 2 commits intomainfrom
hermes/hermes-ba3c8fa1
Mar 17, 2026
Merged

feat: cron agents can suppress delivery with [SILENT] response#1833
teknium1 merged 2 commits intomainfrom
hermes/hermes-ba3c8fa1

Conversation

@teknium1
Copy link
Copy Markdown
Contributor

Summary

Every cron job prompt now includes guidance that the agent can respond with [SILENT] when it has nothing new or noteworthy to report. The scheduler checks for this marker and skips delivery, while still saving output to disk for audit. Failed jobs always deliver regardless.

How it works

  1. _build_job_prompt() always prepends a [SYSTEM: ...] hint teaching the cron agent about [SILENT]
  2. The cron agent does its work. If there's nothing new, it responds with [SILENT] (optionally followed by an internal note)
  3. Back in tick(), the scheduler sees the marker and skips _deliver_result() — output is still saved to disk
  4. Failed jobs always deliver regardless of what the agent said

Design choice

This replaces the notify parameter approach from PR #1807. Instead of a per-job flag with three modes (always/changes_only/never), we just always give the agent the option and let it decide. The model is smart enough to know when a daily report should be delivered vs when a monitoring job found nothing new.

Simpler: no new field on jobs, no schema change, no migration. Same effective behavior.

Supersedes #1807.

Changes

  • cron/scheduler.pySILENT_MARKER constant, always-on prompt hint in _build_job_prompt(), delivery suppression in tick()
  • tests/cron/test_scheduler.py — 8 new tests covering normal delivery, silent suppression, case insensitivity, failure override, output-still-saved

Test plan

  • python -m pytest tests/cron/ -n0 -q — 62 passed, 3 skipped
  • Full suite: 5309 passed (24 pre-existing failures in anthropic_adapter + delegate tests, unrelated)
Test added 2 commits March 17, 2026 13:29
…plete

The /browser command handler existed in cli.py but was never added to
COMMAND_REGISTRY after the centralized command registry refactor. This
meant:
- /browser didn't appear in /help
- No tab-completion or subcommand suggestions
- Dispatch used _base_word fallback instead of canonical resolution

Added CommandDef with connect/disconnect/status subcommands and
switched dispatch to use canonical instead of _base_word.
Every cron job prompt now includes guidance that the agent can respond
with [SILENT] when it has nothing new or noteworthy to report. The
scheduler checks for this marker and skips delivery, while still saving
output to disk for audit. Failed jobs always deliver regardless.

This replaces the notify parameter approach from PR #1807 with a simpler
always-on design — the model is smart enough to decide when there's
nothing worth reporting without needing a per-job flag.
@teknium1 teknium1 merged commit b8076bb into main Mar 17, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant