# Atlas Cron Async-Subagent Audit — 2026-06-23

Source: `~/.hermes/cron/jobs.json` and Hermes v0.17 async-subagent idea from [[Daily Research/2026-06-23 - Hermes AI Brief]].

Related: [[Safer Autonomy and Permission Tiers]], [[MCP Tool Security Checklist]]

## Rule of thumb

Use async/background subagents only when the child work is optional, independently reportable, or can write a durable artifact that the parent can inspect later. Keep jobs synchronous when the final message depends on a single coherent answer, prompt/state ordering, or immediate side-effect verification.

## Good candidates for async children

- `daily-hermes-ai-research-brief`
  - Why: independent searches/source-reading can split into Hermes release/docs, broader AI-agent infra, and coding-agent/MCP patterns.
  - Constraint: parent must synthesize final brief and save the Obsidian copy after children return or write artifacts.
  - Safe pattern: child tasks produce source summaries only; parent owns final claims/citations.

- `weekly-skill-community-capability-scout`
  - Why: same research fan-out shape as daily brief, low side-effect risk.
  - Constraint: no memory writes from children; parent recommends skill/cron/Kanban/n8n placement.

- `weekly-homelab-helm-chart-update-audit`
  - Why: can parallelize changelog/release-note lookup per chart after live app inventory is captured.
  - Constraint: cluster/repo inspection and risk classification stay in parent; children must be read-only and must not run kubectl/helm mutations.

- `daily-proactive-dreaming-brief`
  - Maybe. Session/Obsidian lookups could be child tasks only when the pre-run bundle surfaces clearly separable topics.
  - Constraint: privacy/minimization matters; default should remain synchronous unless there is a real latency/quality win.

## Keep synchronous / script-only

- All `no_agent: true` watchdogs and direct device automations:
  - `atlas-minio-self-backup`
  - `system threshold watchdog`
  - `blocked kanban escalation`
  - `system-hermes-nightly-watchdog`
  - `local-ai-automation-watchdog`
  - `agent-ops-watchdog`
  - `weekly-disk-bloat-scout`
  - `weekly-package-update-watch`
  - `weekly-hermes-repo-freshness`
  - `specialist-profile-smoke-watchdog`
  - `hermes-live-checkout-kanban-guard`
  - wake/light/VLC/WiZ jobs
  - `memory-hygiene-watchdog`
  - `google-oauth-credential-watchdog`

Reason: these are deterministic health checks or physical/device side effects. Async agents add cost, state complexity, and more ways for the toaster to become a distributed system. No thanks.

## Jobs that should not use async children now

- `weekday-gentle-work-check-in`
  - It is intentionally tiny and tool-free. Async here would be architecture cosplay.

- `weekly-dotfiles-sync`
  - The script is source of truth and may touch a git repo. Parent should read script output and report. Do not fan out unless a future version does optional read-only diff/secrets analysis after the script finishes.

## First implementation target

Target: `weekly-skill-community-capability-scout`.

Why first:
- Low operational risk.
- No live cluster/device side effects.
- Easy to compare output quality before/after.
- Natural fan-out into independent source domains.

Candidate child tasks:
1. Hermes Agent / Skills Hub changes.
2. MCP/tool-security/community patterns.
3. Local LLM / agent-ops workflows.

Parent contract:
- Children return only concise source-backed notes with URLs.
- Parent filters hype, dedupes, decides action shape, and sends the final brief.
- No memory writes; durable workflow changes become skills/runbooks only after review.

## Pilot verification — synchronous delegation fan-out

Verified on 2026-06-23 with `weekly-skill-community-capability-scout` (`40360afe333b`):

- The job prompt includes synchronous `delegate_task(tasks=[...])` fan-out and explicitly forbids background/async children.
- The job has `delegation` in `enabled_toolsets` alongside `web`, `search`, `browser`, and `file`.
- Session `cron_40360afe333b_20260623_100254` called `delegate_task` with three read-only web children:
  - Hermes Agent / Skills Hub / Hermes ecosystem.
  - MCP/tool-security/community patterns.
  - Local LLM / agent-ops automation.
- The parent produced one final synthesized report and delivery remained parent-owned.
- Follow-up from that report completed on 2026-06-23: created Hermes skill `mcp-tool-security-reviewer` and linked it from `native-mcp`; it references `Atlas/MCP Tool Security Checklist.md` as the canonical local runbook.
- Current status after verification: last successful run at `2026-06-23T10:04:34-07:00`; next scheduled run remains `2026-06-26T11:00:00-07:00`.

Keep using synchronous fan-out for this cron until true background/async child completion semantics are separately tested for cron delivery. Boring beats haunted.

## Future code/config checks before true background children

Before editing live cron prompts to use background/async children, confirm:

- Whether cron sessions can use async/background children directly.
- How child completion is surfaced to the parent/final delivery.
- Failure/timeout behavior inside the cron 3-minute run envelope.
- Whether toolset restrictions propagate cleanly to children.

## API server verification note

After API key addition and gateway restart on 2026-06-23:

- `hermes gateway status` reported `hermes-gateway.service` active/running.
- `GET /health` on `127.0.0.1:8642` returned HTTP 200.
- `GET /v1/models` without auth returned HTTP 401.
- `GET /v1/models` with `Authorization: Bearer <configured API_SERVER_KEY>` returned HTTP 200 and advertised `hermes-agent`.

No credential value was written here.
