Skip to content

Releases: irootkernel/hermes-agent

Root Kernel Hermes Agent v0.20.5

Choose a tag to compare

@irootkernel irootkernel released this 26 Aug 18:10

Root Kernel Hermes Agent is the Root Kernel downstream distribution of NousResearch Hermes Agent. This release is built directly on upstream Hermes Agent v2026.8.19 (package version 0.20.5) and carries only the behavior gaps reproduced and reviewed against that exact target.

Baseline: direct update from Root Kernel v0.19.1 to v0.20.5. Upstream peeled commit: fcbd1076a93841fa88855acce810e342a5b78101. Root Kernel release commit: b1b2553f6c3e1d89686830a55043f4d22f1a7ea3. Object, commit, and package identity were verified; no cryptographic-signature claim is made.

What differs from upstream Hermes Agent

CJK-aware offline session recovery

Loads the existing CJK tokenizer extension at the separate-output recovery and verification connection boundaries. Korean, Japanese, and Chinese session histories retain canonical counts, SQLite integrity, CJK FTS integrity, and working search after hermes sessions recover.

Fail-closed skill-write approval

Blocks skill mutation when the write-approval gate cannot be imported, initialized, or evaluated. Normal allowed, staged, blocked, and approved-replay behavior remains governed by the upstream approval implementation.

Exact OpenAI Codex credential ownership

Adds profile-local pinning by exact credential ID or unique label. Missing, ambiguous, dead, exhausted, or unavailable pins fail closed; sibling credentials and singleton fallbacks cannot substitute for the configured account. Labelled reauthentication updates exactly the pinned OAuth row, with locked latest-state reconciliation and cross-store rollback protection.

Configure one of the following in the owning profile's approved secret environment:

  • HERMES_CREDENTIAL_PIN_OPENAI_CODEX_ID
  • HERMES_CREDENTIAL_PIN_OPENAI_CODEX_LABEL

Exact ID takes precedence.

Discord thread ownership and role-mention fail-close

Adds persistent first-owner-wins thread admission shared across profiles and across live and recovered messages. Participation alone does not grant ownership, unsafe role-only mentions fail closed, and optional free-response auto-threading occurs only for admitted owned messages.

Bool-safe CLI return-code propagation

Only exact nonzero integers returned by top-level handlers become process exit codes. Python booleans remain successful returns, while native argparse exits and handler-raised SystemExit behavior remain unchanged.

Deliberately omitted downstream carries

  • Root Kernel-specific Kanban lifecycle, schema, tool, prompt, watcher, mutex, and workflow-banner extensions are not included. This release uses native upstream Kanban behavior.
  • Downstream hermes doctor warning filtering is not included. Upstream diagnostics are accepted as-is.

Verification and activation

  • Exact changed-path and omitted-feature guards passed.
  • Final selected verification scope: 144 files, 1,520 passed, 2 Windows-only skips.
  • Seventeen exact-snapshot independent review rounds completed; the final review reported zero blocking security, correctness, or scope findings.
  • Four production profiles migrated from state schema 23 to 26 and config schema 33 to 38 with SQLite integrity OK and zero foreign-key violations.
  • Four gateways restarted from the v0.20.5 live environment, and bounded identity/model probes passed for every active profile.
  • The version branch, annotated release tag, and live branch converge on b1b2553f6c3e1d89686830a55043f4d22f1a7ea3.

Governance

Current behavior, configuration, evidence, carry retirement rules, publication state, and rollback authority are maintained in:

  • root-kernel/feature.md
  • root-kernel/ledger.md
  • root-kernel/carry.yaml

Every retained carry has an explicit retirement rule and should be removed when a later upstream release passes an equivalent behavioral contract without downstream code.

Root Kernel Hermes Agent v0.19.1

Choose a tag to compare

@irootkernel irootkernel released this 07 Aug 03:23

Root Kernel Hermes Agent is the Root Kernel fleet's downstream distribution of NousResearch Hermes Agent, built directly on the verified upstream tag v2026.7.30 (package version 0.19.1). It ships everything upstream v0.19.1 ships, plus a small set of reviewed, ledger-tracked patches ("carries") that close gaps we hit while running a 49-profile, multi-agent production fleet. Every carry has an explicit retirement rule: it is dropped the moment upstream ships an exact replacement.

Baseline: direct update from v0.18.2 → v0.19.1; 16 carry commits on top of the signed upstream tag; live-activated across the fleet with session state migrated to schema 23.

What differs from upstream Hermes Agent

CJK-aware offline session recovery

Upstream hermes sessions recover silently loses every message (5 of 5 lost in our reproduction) when the CJK full-text-search tokenizer is enabled, because the recovery path reopens the destination database without loading the tokenizer. We load the existing CJK extension on the destination and verification connections. Why it matters: Korean, Japanese, and Chinese session histories survive offline recovery intact, with working CJK search — instead of an "empty but successful" recovery.

Fail-closed skill write approval

Upstream's skill write-approval check failed open: if the approval module failed to import, or raised during evaluation, the skill write was allowed anyway. Both failure paths now return a structured success: false before any mutation. Why it matters: a broken or partially installed approval layer can no longer silently switch off your skill write protection.

OpenAI Codex credential pinning and labelled reauth

Adds profile-local pinning to an exact credential ID/label inside a shared Codex auth pool, failing closed on duplicate, missing, dead, or exhausted entries, plus labelled reauth that updates exactly the pinned OAuth row. Why it matters: when many Hermes profiles share one machine's Codex credentials, each profile keeps its own account, and a reauth refreshes only that profile's credential — not whichever pool row happened to load first.

Discord thread ownership and role-mention fail-close

Adds persistent thread-owner tracking shared by live and recovered-message admission, treats Discord role mentions as explicit routing, and extends ownership marking to auto-created, slash-created, and forum threads. Why it matters: in a multi-agent Discord server, a message addressed to another agent's role no longer falls through to the default responder, and only the agent that owns a thread answers in it — even across restarts and missed-message recovery.

Kanban same-card review workflow

Restores and extends the full same-card review loop on top of upstream's native Kanban dispatch: cooperative handoff, kanban_submit_review and kanban_request_changes, creator final acceptance, worker result submission with durable scratch-artifact handling, review-outcome watcher notifications, a board-local mutex_key that serializes simultaneous claims, and a closed set of per-card workflow_type protocol banners injected into worker context. Why it matters: multi-agent coding teams get an enforced implement → review → accept pipeline: a reviewer can send work back to exactly the worker who produced it, two dispatchers cannot claim the same mutex-keyed card, and each card can carry its own workflow rules.

CLI return-code passthrough

Upstream propagates nonzero exit codes but accidentally treats True as failure (isinstance(True, int) is true in Python). We propagate only values whose exact type is int; True, False, None, and strings remain success. Why it matters: scripts and CI wrapping hermes commands see truthful exit codes — a handler returning True no longer reports failure.

Doctor optional-tool warning filter

hermes doctor warned about missing API keys for every unavailable tool, including platforms you never enabled. Unavailable-tool warnings are now filtered through your actually enabled CLI and platform toolset scope (fail-open on any ambiguity). Why it matters: on a minimal install, doctor no longer nags about Discord, Spotify, Home Assistant, or X search keys you never configured — a warning now means something you turned on is genuinely missing a key.

Governance

Every carry is recorded in for-root-kernel.md and root-kernel/carry.yaml with rationale, verification results, a tested rollback path, and independent read-only review before commit.