Releases: crosslink-ch/hermes-agent
Release list
Crosslink Hermes v2026.9.16
Crosslink Hermes v2026.9.16
This release tags the existing Crosslink main at ea25d9b9f97663bb6eaf6739411ef9ba88e49eed. No new source changes or additional upstream merge were made for publication.
Included source
- Includes the upstream reconciliation through
9d75f20630b4361199c734d9292c97de7fd5d108, pinned during the September 14 integration. - Retains Crosslink's fork integrations and container publishing.
- Includes the SQLite corrupt-FTS recovery fix and fork test/CI reconciliation already on
mainsince the previous tagged release. - The complete non-merge commit history since
crosslink-v2026.8.27, with authors and commit links, is attached ascomplete-changelog.md.
Compare with the previous Crosslink release
Validation and known limitations
The September 14 source reconciliation completed paired fork/upstream automated gates. Its recorded comparison found no new fork-only failures. This publication reuses that exact source revision; it does not claim a fresh full-suite run.
- Exact-commit main Docker build, integration tests, and publication: successful for amd64 and arm64.
- Exact-commit hosted CI: not fully green. Python finished with 49,365 passed, 2 failed, and 464 skipped. Both quickstart failures were reproduced on untouched pinned upstream with the same HTTP 409-versus-200 assertion; the dependent aggregate also failed.
- Latest inspected scheduled install/update E2E: failed. Linux and macOS installer/update lanes are not certified by this release. Inspected logs include a locked-dependency mismatch and
hermes updateexiting 1. These failures have not been fixed or waived as passing tests.
Container and KIHub status
Container reference: crosslinkch/hermes-agent:crosslink-v2026.9.16.
Release-triggered container build, integration tests, and publication: successful for linux/amd64 and linux/arm64. Registry manifests and both platform source-revision labels were independently verified against ea25d9b9f97663bb6eaf6739411ef9ba88e49eed.
Immutable OCI index: sha256:c285641c0cbdb751f5c004a47d113faf7d3693014ba07a9a4ed6e515f7e32012.
Disposable KIHub managed-runtime smoke: passed
Executed using KIHub control-plane source e4a250057de94a5882153b419b800222ac92d356, through its API, worker and Helm provisioner, with an isolated local database/queue and fleet upgrades disabled.
- Verified actual Pod image identity against the published immutable image, with
runtimeClassName: gvisorand HCloud PVC storage. - Real authenticated chat and models endpoints passed. Hermes created the exact requested workspace file through its tools.
- Replaced the Pod, verified its UID changed, and confirmed both file persistence and same-session conversation recall.
- Three concurrent real chats and five authenticated dashboard/session reads all succeeded.
- SQLite
PRAGMA quick_checkreturnedok. Exactly one gateway and one dashboard process, zero gateway restarts, and no severe gateway log signals were found. Post-load gateway memory was 421Mi against a 512Mi request and 2Gi limit. - Deletion through the Managed Hermes API succeeded. Independently verified absence of namespace, Helm state, PVC/PV, isolated local DB/Redis state, Compose resources, child processes, temporary kubeconfig, and scoped Honcho workspace/session/message/peer rows.
- Cleanup verification needed two harness-only corrections: Helm 4 does not accept
helm list --all, and Honcho's empty sessions list returns 200 after workspace deletion. Authoritative absence checks passed after correcting those checks; no runtime source fix or replacement release was needed.
No production promotion occurred. Existing managed/control-plane deployment specifications and promotion configuration matched the pre-test baseline. The fork main commit and Docker main/latest digests were unchanged by this release-only operation. Passing this managed-runtime smoke does not turn the disclosed Python or installer CI failures into passes.
Crosslink Hermes v2026.8.27
Crosslink Hermes v2026.8.27
Release Date: August 27, 2026
Source commit: 3b0f4c8d2510
Compare: crosslink-v2026.8.11...crosslink-v2026.8.27
This body is curated to fit GitHub's release-body limit. The complete corrected generated changelog, including every section and contributor, is attached as crosslink-v2026.8.27-full-changelog.md.
✨ Features
- Update): the plan is now the restart worklist — every planned runtime must be accounted for (NousResearch#91277 Phase 2) (NousResearch#91277)
- Desktop): retain Bot group drafts by room (
b42d8279) — @dokterdok - Desktop): make new Bot tabs owner-aware (
9b36c2d4) — @dokterdok - Desktop): define workspace-scoped pane ownership (
b8b6f432) — @dokterdok - Desktop): organize the global bot roster (
613244cb) — @dokterdok - Desktop): configure per-profile remote overrides from the profile rail (
1ad47333) - Models): glm-5.3 replaces glm-5.1 in the OpenRouter and Nous Portal catalogs (
907da145) - Models): stealth/ox-alpha free model in the Nous Portal catalog (
67af79d7) - Nix): wait for the backend bind target before it starts (
fd3a783a) — @ethernet8023 - Browser): add authenticated control broker (
5df1d0e1) — @abundantbeing - Opencode-free is fully keyless — no env var, no account, anonymous wire (
ca06b876) - Bot-mode): durable room identity + full gateway fan-out for group-room sync (
c6745da7) - Cron): per-job reasoning_effort override in job definitions (
4e1dd1a7) — @victor-kyriazakos - Opencode): sync Zen/Go catalogs — Ox Alpha stealth model, Grok routing, new free tier (
19c6a119) - Desktop): a connector consent card that knows nothing about connectors (
4a5b6dd4) — @OutThisLife - Cli): declutter /help + Ctrl+P command palette (C-04/C-05) (
05b4ab0c) - Cli): rotating task-oriented composer placeholder (C-09) (
645f85c2) - Keyed web backends get a one-shot keyless rescue on failure — never sticky (
d1eefe6a) - Desktop): updating now updates every target — remote backends, other gateways, and the app itself (
bd5b221a) - Keyless web tier becomes a 5-vendor round-robin ring (adds Tavily, Firecrawl, Keenable) (
4ea69d9d) - Identical re-calls enter context as reference stubs, not duplicate payloads (
761990b7) - Wall-clock run budget — wrap-up injection at 80% and deadline-scaled stale timeouts (agent.run_budget_seconds / --run-budget) (
803397ec) - MCP tool results spill at 50K and carry upstream-elision warnings (
09e65779) - Image-gen): route live-catalog models to the Image API; merge picker catalogs; docs (
aba96d52) - Image-gen): OpenRouter image picker lists every live image-output model; xAI edits honor dispatched model (
9c6ecf2c) - Image-gen): xAI Grok image catalog goes live-driven; grok-imagine-image-2.0 selectable (
ac0a8cd2) - Desktop): add a dev-only tour demo (
f0d09718) — @OutThisLife - Desktop): keep large gateway registries searchable (
2c6dcf91) — @dokterdok - Desktop): remember the last used source (
2228bc7d) — @dokterdok - Desktop): distinguish sources from profiles (
ccd30f95) — @dokterdok - Desktop): clarify active and default connections (
0ab0ed54) — @dokterdok - Desktop): switch sources from the Sessions rail (
0ca74438) — @dokterdok - Desktop): route REST through registered sources (
7245b022) — @dokterdok - Hermes-bots): add a collapsible group activity view (
8e5f55f8) — @amanning3390 - Cli): compact multi-question clarify panel (
b4526d46) — @ethernet8023 - Group chats get an editable name and room picture, at creation and after (
4349cbbb) - Desktop): open web links in the in-app browser, Cmd-click for the system one (
d48b4415) — @OutThisLife - Bot-mode): support multiple groups per bot (
9bea4391) — @goktugvatandas - Desktop): surface native OS notification on Kanban task completion (
a30636f8) — @nductien - Termux): support apt-managed Hermes installs (
26466d05) — @adybag14-cyber - Evals): add the Browser Use mode A/B benchmark from PR NousResearch#81958 (#81958)
- Providers): flip bundled meta-ai profile to the Responses wire (
f2f6dce7) - Models): add Meta Muse Spark 1.2 to OpenRouter curated picker (
9a862483) — @intellectronica - Misfire catch-up for external cron providers (
48115613) - Desktop): offer Bot Mode agent handles in the composer @ autocomplete (
1a74e7fb) - Optional-skills): add draw-your-font — handwriting photo to installable font (
a98ae192) - Optional-skills): add simple-english — ASD-STE100 Simplified Technical English writing skill (
56182cf8) - Desktop): carry remote gateway headers through the connections registry, test probes, and Settings UI (
b711fd05) - State): support the context-manager protocol on SessionDB (
ab7f48d4) — @jackulau - Raise Codex OAuth context to 900K for gpt-5.6 family and gpt-5.4 (subscription 1M rollout) (
bab7be3c) - Desktop): expose connection-aware plugin routing (
27e4f095) — @addelh - Computer-use): support Cua Driver 0.20 runtime contracts (
a403fe6f) — @f-trycua - Desktop-sd...
Crosslink Hermes v2026.8.11
Crosslink Hermes v2026.8.11
Release date: August 11, 2026
SQLite session persistence
- Keeps canonical session and message writes available when derived FTS indexes are corrupt.
- Confirms ambiguous SQLite
constraint failederrors with a rollback-only trigger probe while preserving genuine canonical constraint failures. - Atomically marks FTS stale, removes only FTS maintenance triggers, retries the canonical write once, and uses bounded canonical search until recovery.
- Rebuilds standard, trigram, and applicable CJK FTS state from canonical messages during controlled reopening.
- Hardens peer-process and startup concurrency so one process cannot undo or miss another process's fail-open transition.
Validation
- Full repository suite: 26,120 passed, 0 failed.
- Relevant state and search suite: 125 passed, 0 failed.
- Exact legacy FTS ghost-row reproduction and recovery passed against the deployed-image runtime.
- Concurrent recovery stress and amd64/arm64 container builds passed.
Change
Contributors
Full changelog: crosslink-v2026.8.9...crosslink-v2026.8.11
Crosslink Hermes v2026.8.9
Crosslink Hermes v2026.8.9
Release commit: 5f6be46e0d1532fbd6a6f801226940ab252525e0
Full comparison: crosslink-v2026.7.22...crosslink-v2026.8.9
Release Date: August 09, 2026
✨ Features
- Read_file): widen document extraction to PDF/legacy Office/ODF/RTF/EPUB via optional anydoc (
b2598b41) - Skills): actual-setup optional skill + provider docs (
5aa798fe) - Scripts): reproducible core-toolset A/B eval harness (toolperf_abeval) (
ced8e302) - Nix): desktop app icon (
b27cdc38) — @ethernet8023 - Desktop): register a Linux launcher entry for
hermes desktop(eea60440) — @ethernet8023 - Desktop): let convert-a-branch reach remote branches too (
cb7f594b) — @ethernet8023 - Image): parallelize image_generate batches (
c0b0cc39) — @EndeavorYen - Thechat): verify signed webhooks and deduplicate replays (
d6fffd89) — @ribaricplusplus - Gateway): add opt-in 'latency' runtime footer field (
ad345a99) — @Kyzcreig - Terminal): auto-save parser-limit-blocked payloads as runnable scripts (
6f5d6b1f) - A2a): file/data Parts + push config full CRUD (
fe1aca57) — @bennybuoy - Gateway): simplex channel enumeration + show configured platforms in hermes send --list (
7483745d) - Terminal): output-pattern failure hints for common error classes (
67747327) - Desktop): add notch wake indicator (
53b8f44e) — @itsflownium - Desktop): add terminal font picker (
0399711b) — @Zeraphim - Desktop): add configurable terminal font family (terminal.font_family in config.yaml) (
131aee92) — @baoyu0 - Desktop): copy the branch-bar worktree path on hover (
a71f20dd) — @OutThisLife - Desktop): let a tool panel shrink to its collapsed header (
aca571ef) — @OutThisLife - Sec): add exclude-newer = 14 days to uv.lock (
88aed1b7) — @ethernet8023 - Desktop): Kanban — dashboard-parity board plugin on the SDK (
79e7adae) — @OutThisLife - Desktop): double-click a message to heart it (
b69d4e5a) — @OutThisLife - Desktop): hydrate commands when repainting inert composer text (
422ecfe1) — @OutThisLife - Desktop): approve pairing requests from the messaging page (
cd8ea6f0) — @OutThisLife - Desktop): tab verbs follow the pane under the pointer (
15a55cbf) — @OutThisLife - Observability): add Relay active install metrics (
46bae750) — @afourniernv - Computer_use): align cua-driver 0.10 permission modes (
c2683977) — @f-trycua - Computer_use): align cua-driver 0.9 contracts (
847e401b) — @f-trycua - Salvage(NousResearch#51128): translate new session-filter strings across 17 locales; expose public get_session_rich_row for search hydration (#51128)
- Dashboard session filtering (
cb004955) — @shannonsands - Voice): route CLI/TUI speak_text through the generic streaming dispatcher (NousResearch#58930) (#58930)
- Photon): add native poll sending (
077c583c) — @arnoldfrancisca - Xai-tts): wire text_normalization parameter (
d1e93447) — @Cdddo - Pricing): add gemini-3.6-flash and gemini-3.5-flash-lite official snapshot entries (
d259b24e) - Desktop): end a hands-free voice conversation by saying "stop" (
09c62d5d) - Wake): eager-install voice deps with the desktop; wake probes never run pip (
a832139b) - Tui): /wake on|off|status slash command (
71a2feea) - Voice): bundle the trained "hey hermes" model as the out-of-the-box default (
9f84bc30) — @OutThisLife - Whatsapp): support inbound read receipts (
35afa8ce) — @maff-t2b - Desktop): cache slash completions and list skills on a bare / (
341f95b2) — @OutThisLife - Desktop): render delegate_task as its live subagent list (
2818c9e5) — @OutThisLife - Stt): pass local initial_prompt to faster-whisper (
f6548167) — @BlackishGreen33 - Plugins): add public subagent lifecycle API (
1865fb5f) — @asimons81 - Approvals): add cross-surface mode command (
f9cd5779) - Statusbar): hide the per-turn session readouts by default (
5b9518db) — @OutThisLife - Delegate): expose redacted child tool history (
e369d6ea) — @embwl0x - Cli,gateway): unify /context into a visual context-usage breakdown (
07370a9d) - Prompt-size): per-skill and per-toolset token-cost breakdown (
8b942344) — @joelbrilliant - Approvals): hermes approvals suggest — mine approval history into allowlist proposals (
db90e362) - Desktop): quick-entry window — global hotkey capture to any session (
d6fdae67) - Cli): hermes import-agent — import Claude Code and Codex CLI setups (
24c3c27b) - Clarify): extend multi-select to gateway text fallback and TUI bridge (
10b7ab5c) - Tools): skills-style catalog listing for tool_search progressive disclosure (
e869accc) - Desktop): render-churn perf scenario (
37ac8ae7) — @OutThisLife - Compression): stream the summary call on every compression path (
9de7dfe1) - Deskto...
Crosslink Hermes v2026.7.22
Crosslink Hermes v2026.7.22
Release Date: July 22, 2026
🐛 Bug Fixes
- Make the durable async-delegation registry honor Hermes' shared SQLite journal policy instead of unconditionally forcing WAL.
- Prevent managed Hermes instances configured with
HERMES_SQLITE_JOURNAL_MODE=deletefrom being switched back to WAL and enteringdatabase is lockedfailures during concurrent startup. - Add a regression test that starts from an existing WAL database and verifies the managed DELETE policy persists.
👥 Contributors
- Bruno Ribaric
Full Changelog: crosslink-v2026.7.17.4...crosslink-v2026.7.22
Crosslink Hermes v2026.7.17.4
TheChat current-contract completion
This release supersedes crosslink-v2026.7.17.3. A delayed independent audit found additional obsolete TheChat compatibility that the previous correction did not remove.
- Requires canonical conversation UUIDs for inbound
chatIdand proactive delivery targets. - Requires
event.id == event.invocationId,chatId == conversation.id, matching chat/conversation types, and the exact current branch-intent keys. - Removes composite
thechat:workspace:...:conversation:...:bot:...target parsing andconversationId/botIdextraction from encoded chat strings. - Removes passive Hermes session metadata (
sessionId,sessionKey, lineage,hermes_session) from TheChat message, progress, title, slash-command, and demo paths. - Retains current invocation-scoped
conversationIdandbotIdfields when they come from a canonical inbound event context. - Rewrites TheChat, delivery, cron, proactive-send, queue/lifecycle, branch, and demo coverage around the current contract, with explicit rejection tests for obsolete shapes.
Verification
- Exact commit:
53c7ac1381e9a2365c6f208c24c81fcca4096492 - Exact-commit CI: https://github.com/crosslink-ch/hermes-agent/actions/runs/29625512383 — passed.
- Release/image workflow: https://github.com/crosslink-ch/hermes-agent/actions/runs/29625850951 — passed.
- Published image:
crosslinkch/hermes-agent:crosslink-v2026.7.17.4 - OCI index digest:
sha256:6a610549b4de575bf10a5f99dd2c30219652a0b649b21cc4a0c08d9fbdb26e9f - Manifest includes
linux/amd64andlinux/arm64; the pulled image revision label matches the exact commit. - In-image current-vs-obsolete contract smoke returned
imports-and-current-contract-ok. - Local current-contract and affected suite: 504 passed.
- Managed checkout current-contract suite: 467 passed.
- Local broad gateway run: 9,535 passed, 12 skipped, 26 unrelated ambient/dependency failures; no TheChat failures.
- Static obsolete-path audit, Ruff, Python compilation, demo execution, and
git diff --checkpassed.
Crosslink Hermes v2026.7.17.3
TheChat current-contract correction
This release makes the Crosslink Hermes integration match the current TheChat contract only.
- Uses
PlatformConfig.token/THECHAT_BOT_TOKENas the single bot credential location. - Rejects
extra.tokenand the removedTHECHAT_HERMES_BOT_TOKENalias. - Requires the current
thechat.hermes_platform.eventwebhook envelope andHermesPlatformEventfield shape. - Supports the current
sessionIntentbranch form only:type,fromThreadId, andtitle. - Treats
/bots/me/commandsas part of the current connection contract. - Removes old payload aliases, direct-webhook shapes, session resume/fork aliases, and test-only compatibility wrappers.
Verification
- Exact commit CI: https://github.com/crosslink-ch/hermes-agent/actions/runs/29623487788
- TheChat-focused suite on the managed checkout: 59 passed.
- Gateway suite: 9,549 passed; 10 unrelated pre-existing/environment-sensitive failures, with no TheChat failures.
- Ruff, Python compilation, and
git diff --checkpassed.
Crosslink Hermes v2026.7.17.2
Crosslink Hermes v2026.7.17.2
Release Date: July 17, 2026
🐛 Bug Fixes
- Ci): fall back to GitHub token for JS autofix (
b1de5116) — Bruno Ribaric - Fmt(js): apply npm run fix output (
e530326a) — Bruno Ribaric - Model-picker): show exhausted-pool providers in interactive /model picker (NousResearch#66584) (#66584) — @austinpickett
- Desktop): expose Local / custom endpoint in Providers API-keys tab (NousResearch#62818) (#62818) — @DavidMetcalfe
- Desktop): trust Windows system CAs for remote gateways (NousResearch#66304) (#66304) — @HexLab98
- Tools/kanban): sync kanban_unblock response status with DB state (
9a7a43b5) — @Dusk1e - Stop infinite loop when assistant content is a block list (
296494db) - Cron): avoid Windows Python launcher popups (
1b63737f) — @helix4u
📚 Documentation
- Kanban): explain why an unblocked task can later land in triage (
ae1cd746)
👥 Contributors
Thank you to everyone who contributed to this release!
- Bruno Ribaric (2 commits)
- @DavidMetcalfe (2 commits)
- @austinpickett (1 commit)
- @oppih (1 commit)
- @alvarosanchez (1 commit)
- @HexLab98 (1 commit)
- @Dusk1e (1 commit)
- sjiangtao2024 (1 commit)
- @helix4u (1 commit)
Full Changelog: crosslink-v2026.7.17...crosslink-v2026.7.17.2
Crosslink Hermes v2026.7.17
Crosslink Hermes v2026.7.17
Release Date: July 17, 2026
✨ Features
- Cron): add truthful execution ledger (
d9dd05b6) - Unreal-mcp): live-verify skill against a running UE 5.8 server; encode e2e test findings (
d24ab204) — @SHL0MS - Honcho): make latency-adding paths configurable (
e8957bab) — @erosika - Honcho): add list mode to honcho_conclude so delete can resolve a real conclusion id (
f4669f34) — @vizi0uz - Gateway): route platform HTTP event callbacks (
1305a690) — @aeyeopsdev - Pricing): refresh Fireworks snapshot to 2026-07, cover full serverless catalog + cached picker pricing (
fe5c0cb6) - Add LM Studio JIT load mode (
1a323d60) — @marcelohildebrand - Dashboard): clarify manual Telegram bot setup (
d1be769b) — @shannonsands - Desktop): add background-task indicator to sidebar session rows (NousResearch#65174) (#65174) — @ethernet8023
- Mcp): enforce exact version pins across the whole MCP catalog (
9df5f879) - Moa): support per-slot reasoning effort (
3dca75b4) — @justinschille - Skills): expand humanizer patterns and humanize its own prose (
ef010f87) — @SHL0MS - Slack): cover agent view assistant APIs (
f1328a6b) — @SemonCat - Slack): support agent view manifests (
9a3b676f) — @SemonCat - Desktop): add a chat backdrop on/off toggle (
1813d304) — @OutThisLife - Gemini): improve request context for support and compatibility (
b8eb89f5) — @vishal-dharm - Desktop): electron — openDir IPC + ⌘W menu bridge (tabs, not windows) (
10fbade6) — @OutThisLife - Desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers (
7f74b324) — @OutThisLife - Desktop): contribution controller, surfaces, and wiring (
0f922002) — @OutThisLife - Desktop): focused-session-aware titlebar + statusbar (
0f398f8e) — @OutThisLife - Desktop): session hooks — open-in-tile, per-session actions, resilient resume (
2afbe777) — @OutThisLife - Desktop): chat view — drop overlays, composer scoping, tile integration (
860a3f67) — @OutThisLife - Desktop): ⌘W close-tab, ⌘⇧T reopen, ⌘T new tab, ⌘1-9 + ⌃Tab tab switching (
eae1d7d1) — @OutThisLife - Desktop): pointer session drag/drop + row/tab menus with close others/right/all (
ac4f596c) — @OutThisLife - Desktop): multi-session tiles — per-profile state, tile pane, pane mirror (
e6fea77d) — @OutThisLife - Desktop): routes, nav, and command palette as contributions (
f1379bd6) — @OutThisLife - Desktop): shared UI — per-session prompt overlays, gateway overlays, tab primitives (
aae35c5e) — @OutThisLife - Desktop): layout-tree renderer — splits, zones, pointer drag-session, tab strip (
63a9bde7) — @OutThisLife - Desktop): layout-tree model + store + workspace geometry (
c388daa6) — @OutThisLife - Desktop): plugin manager, runtime loader, and plugins settings (
7ed71709) — @OutThisLife - Desktop): contribution registry — namespaced areas, keybinds, palette (
aefb3629) — @OutThisLife - Desktop): plugin SDK surface — rest door, socket, react-query, UI kit (
99ff67eb) — @OutThisLife - Ci): show passed/failed jobs in summary (
79061f44) — @ethernet8023 - Desktop): auto-fetch remote base branch before worktree add (
f6d1fd51) — @ethernet8023 - Delegation): persist background completions (
67f4e1b4) - Desktop): add profile-aware approval mode control (
3510b188) — @Tortugasaur - Kanban): surface final_result for Done cards; show run summary when task.result is empty (
deae8e3b) — @iborazzi - Kanban): collect project directory when creating boards (NousResearch#63249) (#63249)
- Gateway,acp): translate cross-boundary cwd when running in WSL (
3c7b9f2e) — @OutThisLife - Cli): restore cwd on resume (--no-restore-cwd) (
b5f0e451) — @OutThisLife - Make smart approvals the default (NousResearch#62661) (#62661)
- Gateway): add authenticated runtime readiness checks (
f9728af5) - Agent): track per-model token usage for mid-session model switches (
cb7f6bbb) — @tcconnally - Providers): add Fireworks AI as preferred provider (
c97d9a4c) — @alex-fireworks - Security): expose deterministic tool output risk (NousResearch#61793) (#61793)
- Desktop): TikTok-style vibe hearts on a reusable particle system (
3aaf7e38) — @OutThisLife - Openai): cover gpt-5.6 -pro variants (PR NousResearch#61587 complement) (#61587) — @kshitijk4poor
- Gateway): attach MEDIA: caption to the media bubble on standalone sends (
709da844) — @kshitijk4poor - Desktop): ts-ify everything (
39d09453) — @ethernet8023 - Desktop): group tool calls across text-less assistant messages (
6d652102) — @OutThisLife - Xai): add grok-4.5 (GA) to model catalog, context lengths, and reasoning-effort allowlist (NousResearch#60887) (#60887)
- Models): swap curated Tencent Hy3 Preview for GA tencent/hy3, drop owl-alpha (NousResearch#60943) (#60943)
- Gateway): generic OIDC client-credentials relay provisioning (NAS-free) (NousResearch#60730) (#60730) — @benbarclay
- WhatsApp dashboard pairing flow (
4f620a0b) — @shannonsands - Gateway): GATEWAY_MULTIPLEX_PROFILES env override for multiplex flag (NousResearch#60589) (#60589) — @benbarclay
- Relay): carry routed profile from the connector wire source (NousResearch#60586) ([NousResearch#60586](https://githu...
Crosslink Hermes v2026.7.9
Crosslink Hermes v2026.7.9
Release Date: July 09, 2026
✨ Features
- Sessions): full prune-filter set + --redact on sessions export (
acfefa4f) - Kanban): add grab-to-pan board scrolling (
cc0aa18f) — @vampyren - Add uninstall dry-run mode (
49168978) - Gateway): default session auto-reset to off (mode: none) (NousResearch#60194) (#60194)
- Sessions): any prune filter matches all ages; preview shows age span (NousResearch#59415) (#59415)
- Cli): add --connect-timeout flag to hermes mcp add (
d52d2973) — @sberan - Hooks): spill oversized hook-injected context to disk (NousResearch#20468) (#20468)
- Make busy steer ack configurable (
12f03b11) — @devatnull - Add generic gateway status phrases (
4bf5b563) — @devatnull - Desktop,docs): surface stt.echo_transcripts in desktop settings and docs (
55800130) — @vKongv - Add STT transcript echo toggle (
bfc52627) — @devatnull - Mcp): surface MCP server log notifications in agent.log (NousResearch#57416) (#57416)
- Allow suppressing Codex gpt-5.5 autoraise notice (
86a0c555) — @shashwatgokhe - Gateway): add /sessions search (NousResearch#57685) (#57685)
- Dashboard Hermes console UI (
f7d90edd) — @shannonsands - Dashboard Hermes console websocket (
4493bba9) — @shannonsands - Safe Hermes console REPL (
dcbce869) — @shannonsands - Desktop): CLI/dashboard parity — skills hub, MCP test/toggle/catalog, maintenance ops, log filters (NousResearch#57441) (#57441)
- Skills): add security/unbroker (autonomous data-broker removal) (
c2828f2b) — @SHL0MS - Desktop): collapse profile rail to a select past 13 profiles (NousResearch#57306) (#57306) — @OutThisLife
- Desktop): /journey opens the memory graph overlay instead of printing text (
931e2356) — @OutThisLife - Gateway): add 'log' option to display.tool_progress (
39bff679) — @keslerm - Image-gen): support Codex image inputs (
ecffd290) — @CrazyBoyM - Gateway): per-channel model and system prompt overrides (Fixes NousResearch#1955) (#1955) — @crazywriter1
- Delegation): unify concurrency caps — deprecate max_async_children (NousResearch#56955) (#56955)
🔧 Improvements
- Sessions): fold Markdown/QMD export into 'sessions export --format' (
f3c27e30) - Setup): route dependency installs through the canonical uv→pip→ensurepip ladder (
ba865e40) - Retry): single-source Z.AI overload short-attempts + drop change-detector assert (
45f5a6e6) — @kshitijk4poor - Cut first-turn time-to-first-token by ~80% (all platforms) (NousResearch#59332) (#59332)
- Gateway): move routing index to state.db, make sessions.json an optional legacy mirror (NousResearch#59203) (#59203)
- Gate pre-API compaction through the preflight guard chain (
90f84144) — @kshitijk4poor - Web_tools): single registry authority for custom-provider availability (
a9cd0e07) — @kshitijk4poor - Slack): extract _is_list_line helper for list-marker checks (
9f604674) — @kshitijk4poor
🐛 Bug Fixes
- TheChat /queue lifecycle completion (
322ea629) — @ribaricplusplus - Discord): widen expired-defer handling to /thread slash command (
4c3a388c) - Tools): keep shell snapshots owner-only (
a1e6ea7d) — @egilewski - Docs): discord permissions (add Create Public Threads, remove Use External Emojis) (
27181791) — @flo1t - Telegram): bound start_polling() at bootstrap and conflict-retry sites too; strengthen tests (
aaeba213) — @kshitijk4poor - Discord): bound component labels by UTF-16 units (
87be36c2) — @ooiuuii - Discord): bound REST response reads (
b8ce583e) — @ooiuuii - Repair URL authority whitespace before web fetches (NousResearch#46363) (#46363)
- Merge split gateway pairing stores (
8a7d0790) — @williamumu - Re-apply confirmation expiry on the cached-agent live-history path (
3c8130a8) — @kshitijk4poor - Fetch Codex quota from credential pool (
b2213ba8) — @spiky02plateau - Auxiliary): recover from stale fallback-candidate credentials instead of aborting (
d42e9b17) - Tui): keep bare custom model listing stable (
b3bee33a) — @helix4u - Tui): probe active custom model provider (
4b4f0588) — @helix4u - Tui): support model picker refresh (
4131ec38) — @helix4u - Tui): stop hermes --tui -m from persisting the model globally (NousResearch#59805) (#59805)
- Agent): don't apply Codex gpt-5.5 autoraise notice when an external context engine is active (
60391d0e) — @AIalliAI - Ci): make the CI timing report unflakeable (NousResearch#59818) (#59818)
- Interrupt): run user-approved commands from a clean interrupt slate (
d7348bf2) — @hellno - Gateway): drop interrupt sentinel before chat delivery (NousResearch#7921) (#7921) — @waseemshahwan
- Background-review): guard summarize against list-shaped tool responses (NousResearch#59437) (#59437) — @Ahmett101
- Mcp): sanitize server names for auth env keys (
e53e8a78) — @giggling-ginger - Cron): prevent double-execution of one-shot jobs across concurrent schedulers (
06cc983b) — @isheng-eqi - Gateway): fail-closed adapter resolution for unregistered secondary profiles (
ab70551b) - Desktop): normalize CRLF back to LF in update-marker files (
713236dc) - Mcp): park after initial connect failures ([
2ea03d8c](2ea03d8c6b95fa6a708...