Hermes v0.21.1: Das Update, das Hermes um ein Drittel kleiner gemacht hat – und alles, was dir wichtig ist, schneller

Die meisten Hermes-Updates verlangen etwas von dir: einen neuen Befehl, den du lernen musst, einen neuen Config-Key, den du abwägen musst, einen neuen Standard, der das Verhalten deines Setups verändert. v0.21.1 (Tag v2026.9.7, erschienen am 7. September 2026) ist die seltene Ausnahme – ein Update, das du installierst und kaum bemerkst, weil alles, was sich geändert hat, unter der Haube liegt oder in den Teilen des Workflows, die dich früher am meisten genervt haben. Das Projekt nennt das einen Konsolidierungs-Patch: rund 5.139 Commits, ~4.364 geänderte Dateien und ~632 gemergte PRs seit v0.21.0, mit knappen offiziellen Notizen; die volle Kuratierung folgt mit v0.22.0. Wir haben das Fenster trotzdem für dich durchgearbeitet – hier ist, was wirklich zählt.
Ein Update, das die Codebase um ein Drittel verkleinert hat
Die größte Geschichte dieses Fensters bleibt unsichtbar, solange du das Repository nicht öffnest: eine Vereinfachung der gesamten Codebase (PR #102117) hat den Quellcode von 1.063.826 auf 698.363 Zeilen gebracht – ein Schnitt von 34,4 % – bei garantiert unverändertem Verhalten. Aus 37 Dateien mit über 5.000 Zeilen wurden sechs. Die berüchtigten Monstren sind verschwunden: gateway/run.py schrumpfte von 34.847 auf 5.512 Zeilen, cli.py von 22.426 auf 4.656, und die Zahl der Funktionen mit über 300 Zeilen fiel von 192 auf 2. Die alten Dateien blieben als schlanke Einstiegspunkte zurück, und das Team hat vor dem Merge byte-identische Tool-Schemas, Config-Standards und Wire-Formate gegenüber dem Stand vor dem Refactor verifiziert.
Warum sollte dich das interessieren, wenn sich nichts Sichtbares geändert hat? Weil eine Codebase, die in den Kopf eines Modells passt, weniger Navigation kostet: Die eigenen Evals des PRs haben Erfolgsquote und Token-Verbrauch von Agenten bei der Repository-Navigation vorher und nachher gemessen, und jedes Subsystem ist jetzt klein genug, dass ein Agent (oder ein Mensch) es tatsächlich im Kontext halten kann. Deine nächste Session auf einer großen Codebase lädt schneller und macht weniger Fehlgriffe – der Refactor ist praktisch ein permanenter Token-Rabatt für agentisches Coden. Die zugehörige Release-Seite auf dieser Site hat die vollständigen Zahlen, falls dir danach ist: v0.21.1-Release-Notizen.
Fan-outs melden sich, sobald Ergebnisse eintreffen
Wenn du je fünf Subagenten zur Recherche losgeschickt hast und dann eine Stunde auf einen leeren Chat gestarrt hast, weil der langsamste hängen geblieben war – das hier ist für dich. delegate_task lieferte früher ein einziges riesiges Ergebnis, nachdem das letzte Kind fertig war; jetzt kommt jede Aufgabe in dem Moment zurück, in dem sie abgeschlossen ist (PR #104299). Aufgaben, die zusammengehören, können sich für ein group entscheiden, und gruppierte Ergebnisse treffen weiterhin als eine Nachricht ein:
{
"tasks": [
{ "goal": "check api latency", "group": "bench" },
{ "goal": "check db latency", "group": "bench" },
{ "goal": "scan the changelog" }
]
}
Die beiden Benchmark-Aufgaben kommen zusammen zurück; der Changelog-Scan erscheint für sich, sobald er fertig ist. Du kannst sofort mit den frühen Ergebnissen arbeiten, statt auf den Nachzügler zu warten – und der gesamte Aufruf zählt weiterhin als ein einziger Slot gegen delegation.max_concurrent_children, die Kapazitätsrechnung bleibt also unverändert. Kombiniere das mit dem Leitfaden zur Live-Orchestrierung von Subagents, und ein Fan-out fühlt sich an wie ein Team, dem du bei der Arbeit zusehen kannst.
Kinder übergeben dir das Steuer – auch bei Hintergrundprozessen
Derselbe Delegations-Durchgang hat einen der unangenehmsten Fehlerfälle der Multi-Agent-Arbeit behoben: Ein Kind, das einen lang laufenden Hintergrundprozess startet und dann beendet wird, ließ diesen Prozess früher herrenlos zurück – die Aufräumroutine des Kindes killte ihn stillschweigend, oder der Parent wartete auf eine Abschlussmeldung, die nie eintreffen konnte, weil das notify=true des Kindes ein Versprechen war, das niemand halten konnte. Jetzt kann ein Subagent dir einen laufenden Prozess übergeben, bevor er beendet wird – mit process_manage(action="handoff", session_id=<id>, data="<purpose>"); das Eigentum wechselt zum Parent, und wenn der Prozess endet, landet die Meldung mit dem Zweck in deinem Chat (PR #105125). Zurückgelassenes wird ehrlich als beendet gemeldet, und Kinder erfahren von vornherein, dass Benachrichtigungen nicht garantiert sind. Das Rätsel der verwaisten Prozesse ist gelöst.
MCP-Logins ohne Browser
Du verbindest dich per SSH mit einer Headless-Maschine, richtest Hermes auf einen selbst gehosteten MCP-Server aus und läufst gegen die Wand: Der Server will einen OAuth-Browser-Flow, und der einzige Browser im Haus ist auf deinem Handy. Genau für diese Situation sind RFC-8628-Device-Codes gedacht, und v0.21.1 bindet sie Ende zu Ende ein (PR #104891). Ein einziger Befehl startet den Flow:
hermes mcp login <server> --flow device
Hermes findet den Device-Endpoint des Servers, gibt eine Verifizierungs-URI und einen Code aus und pollt, bis du zustimmst – von jedem Gerät mit Browser aus. Setze oauth.flow: device in der Config des Servers, und das wird zum Standard für Login und Reauth. Abgelehnte oder abgelaufene Grants überschreiben deine vorhandenen Anmeldedaten nie, und Hintergrund-Wiederverbindungen verweisen dich auf einen expliziten Login, statt stillschweigend einen Device Flow zu starten. Wenn du MCP-Server auf Remote-Hosts betreibst, beseitigt das eine ganze Klasse von „Hier kann ich mich nicht autorisieren“-Schmerzen – den Rest der headless-freundlichen MCP-Werkzeuge findest du in unserem Leitfaden zu MCP-Kontextvariablen.
Picks, die frisch bleiben, Pins, die halten
Zwei Verbesserungen der Modellauswahl sind in diesem Fenster gelandet, und zusammen beheben sie den Moment, in dem du dich fragst: „Moment, warum hat es diesen Provider genutzt?“ Erstens kann OpenRouter-Routing jetzt pro Modell gepinnt werden, nicht nur global (PR #104159):
provider_routing:
sort: price
models:
"openai/gpt-6-astra": { only: [openai] }
"anthropic/claude-fable-5.1": { only: [anthropic] }
Eine Config sperrt GPT-6 Astra jetzt auf OpenAI und Claude Fable auf Anthropic, während alles andere weiterhin nach Preis sortiert wird – und weil die Regel an dem einen Engpass greift, den jeder Request-Pfad gemeinsam durchläuft, respektieren sie auch cron-Jobs und delegierte Kinder. Wenn du dem Leitfaden zum Astra-Discovery-Gating gefolgt bist: Das ist der Hebel, der Multi-Provider-Astra-Setups deterministisch macht.
Zweitens bleibt der /model-Picker nicht mehr stehen: Remote-Kataloge aktualisieren sich alle 20 Minuten statt nach einer TTL von 1 Stunde, und eine Hintergrundschleife im Gateway hält sie warm, selbst wenn niemand den Picker öffnet (PR #101319) – ein Modell, das neu gestartet oder aus der Liste genommen wurde, erscheint (oder verschwindet) innerhalb von zwanzig Minuten auf jeder Oberfläche. Der Meta-Model-API-Provider nutzt außerdem seine Live-Antwort unter /v1/models als maßgeblichen Katalog, sodass neue Muse-Modelle erscheinen, ohne auf ein Client-Update zu warten (PR #101503). Weitere Katalog- und Override-Mechanismen findest du im Leitfaden zu Modell-Overrides.
Schneller unter der Haube: Suche, Compaction und ein ehrlicherer Cron
search_filesnutzt jetzt natives ripgrep auf lokalen POSIX-Maschinen (PR #104502) – Inhaltsuchen fallen von ~85 ms auf ~15 ms, Dateinamensuchen von ~73 ms auf ~12 ms. Gleiche Ergebnisse, 5–6× weniger Tool-Latenz, was sich in Agent-Schleifen, die ständig suchen, schnell summiert.HERMES_NATIVE_FILE_READ=0stellt den alten Shell-Pfad wieder her, falls etwas Ungewöhnliches auftaucht.- Compaction behält ihren Prefix-Cache in Coding-Sessions (PR #104455): Der Snapshot des Coding-Workspace wird pro Session gepinnt, statt an jeder Compaction-Grenze
git statusneu abzufragen – lange Sessions zahlen so nicht mehr dafür, den Prompt nach jedem Compact von Grund auf neu aufzubauen. - Fertige Subagenten leaken keinen Speicher mehr (PR #102032): Kind-Transkripte werden aus dem Heap des Parents freigegeben und aus dem Volltextindex ausgeschlossen – ein Lauf mit 1.320 Kindern hinterließ früher einen 1,9-GB-Heap und ~1 GB an Shadow-Tables.
- Cron meldet verpasstes Feuern ehrlich (PR #100445, #104877):
hermes cron listzeigt jetzt pro Job eineDispatch:-Zeile –⚠ catch-up after missed firestatt eines trügerisch sauberen „ok“ – und leise Monitor-Ticks löschen den Kontinuitätskontext nicht mehr, den der nächste Lauf braucht. Mehr zur Cron-Hygiene im Leitfaden zum Cron-Doktor.
Im selben Fenster gab es einen echten Sicherheitsfix: approvals.deny-Regeln werden jetzt innerhalb isolierter Docker- und Cloud-Sandboxes durchgesetzt (PR #103649) – das schließt einen Weg, auf dem eine Deny-Liste selbst unter --yolo mit einer Sandbox-Shell umgangen werden konnte. Das Pantheon-Release v0.21.0 war das große Feature-Release; v0.21.1 ist die Aufräumarbeit, die das Haus in Schuss hält. Falls du die letzten Patches übersprungen hast: Unser Rückblick auf v0.20.6 fasst zusammen, was davor eingezogen ist.
hermes update
Upgrade durchführen, hermes doctor ausführen, das Gateway neu starten – und dich über ein Update freuen, das ein Drittel des Codes verändert hat, ohne dich zu bitten, auch nur eine einzige Einstellung zu ändern.