Skip to content
This repository was archived by the owner on Jun 4, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
434 commits
Select commit Hold shift + click to select a range
421ab81
fix(cli): reuse canonical root model key normalization in load_cli_co…
novax635 May 23, 2026
d46adad
feat(cli): kanban promote verb for manual todo->ready recovery
thedavidmurray May 20, 2026
b207dc2
feat(kanban): --ids bulk promote + AUTHOR_MAP entry for #29464
teknium1 May 24, 2026
d3c167b
fix(profiles): cross-profile soft guard on file-write tools + system-…
teknium1 May 24, 2026
21db250
fix(wecom-callback): retry send with fresh token on errcode 40001/42001
AhmetArif0 May 23, 2026
7abd627
gateway: debounce queued text follow-ups
pnascimento9596 May 24, 2026
51bb8c0
chore: map pnascimento9596@gmail.com for PR #31235 salvage
teknium1 May 24, 2026
1bed4e8
fix(gateway): drop text snippet from debounce debug log (CodeQL)
teknium1 May 24, 2026
5848174
fix(wecom): guard flush task against cancel-delivery race to prevent …
AhmetArif0 May 23, 2026
c9b3eea
fix(cli): decouple tool_progress=verbose from global DEBUG logging (#…
teknium1 May 24, 2026
bc3f1f4
feat(secrets/bitwarden): EU Cloud + self-hosted server URL support (#…
teknium1 May 24, 2026
9732559
fix(security): restrict dashboard websockets to loopback clients (#30…
teknium1 May 24, 2026
1f897b0
fix(gateway): stop enabling dingtalk allow-all during setup (#30743)
teknium1 May 24, 2026
c3caca6
fix(gateway): remove discord role allowlist auth bypass (#30742)
teknium1 May 24, 2026
e4a1220
security: restrict default webhook toolset capabilities (#30745)
teknium1 May 24, 2026
3e78e35
fix(qqbot): authorize approval button interactions by session owner (…
teknium1 May 24, 2026
4ca77f1
Harden msgraph webhook auth requirements (#30169)
teknium1 May 24, 2026
2df2f91
fix(docker): keep dashboard side-process loopback by default (#30740)
teknium1 May 24, 2026
be27bfe
security: harden API server key placeholder handling (#30738)
teknium1 May 24, 2026
485292a
fix(feishu): authorize interactive exec approval callbacks (#30739)
teknium1 May 24, 2026
bdb97b8
fix(feishu): enforce auth and chat binding for approval buttons (#30744)
teknium1 May 24, 2026
197f63f
fix(feishu): require webhook auth secret and honor config extras (#30…
teknium1 May 24, 2026
7eb6c7f
fix(acp): deliver final_response after streaming — transform_llm_outp…
kenyonxu May 20, 2026
8edeebe
fix: propagate response_transformed flag — plugin hook output survive…
kenyonxu May 20, 2026
a4ceead
fix(gateway): propagate response_transformed flag through run_sync re…
kenyonxu May 20, 2026
5cb21e3
fix(gateway): edit streamed message instead of sending duplicate when…
kenyonxu May 20, 2026
b9f533a
test(gateway): regression for plugin-transformed response after strea…
teknium1 May 24, 2026
26088ca
chore: map kenyon1977@gmail.com for PR #29119 salvage
teknium1 May 24, 2026
60d20a3
fix(acp): only deliver final_response after streaming when transformed
teknium1 May 24, 2026
9140be7
fix(streaming): emit finish_reason=length on text-only partial-stream…
xxxigm May 23, 2026
20b3703
fix(conversation-loop): tailor length-continuation prompt for partial…
xxxigm May 23, 2026
6cafcf9
test(streaming): pin partial-stream-stub finish_reason + continuation…
xxxigm May 23, 2026
5acaeba
fix(mcp): raise ImportError instead of NameError when stdio SDK missi…
teknium1 May 24, 2026
ee002e7
fix(dashboard): require auth for plugin rescan (#27340)
LaPhilosophie May 24, 2026
bbf02c3
fix(gateway): validate Svix webhook signatures (#30200)
BaxBit May 24, 2026
dbf73e9
fix: fail closed for webhook routes without secrets
m0n3r0 May 21, 2026
15aa688
fix(webhook): use 403 not 500 for missing-secret rejection
teknium1 May 24, 2026
5e6749f
chore(release): map m0n3r0 for PR #29629 salvage
teknium1 May 24, 2026
f378f00
fix(feishu): validate verification token before reflecting url_verifi…
m0n3r0 May 24, 2026
3bace07
fix(state): restrict sensitive store file permissions
Hinotoi-agent May 24, 2026
889903f
fix(tests): align CI tests with recent security hardening (#31470)
teknium1 May 24, 2026
38b8d0d
fix: emit guardrail halt message to client before closing stream
vanthinh6886 May 23, 2026
186bf25
test(guardrail): assert halt message reaches stream_delta_callback
teknium1 May 24, 2026
2e66eef
fix(dashboard): validate WebSocket Host and Origin
Hinotoi-agent May 22, 2026
d9ec905
test(dashboard): send loopback headers for WebSocket sidecar test
Hinotoi-agent May 23, 2026
3d66787
fix(vision): route auxiliary.vision.provider=openai to api.openai.com…
teknium1 May 24, 2026
5b52e26
fix(gateway): swallow transient Telegram TimedOut at loop level
teknium1 May 24, 2026
8065e70
fix(agent): abort on HTTP 402 after pool rotation and fallback fail (…
teknium1 May 24, 2026
7ab1677
feat(security): on-demand supply-chain audit via OSV.dev (#31460)
teknium1 May 24, 2026
775a172
fix(transport): strip Hermes-internal scaffolding keys before chat.co…
Soju06 May 15, 2026
6212e9a
fix(error-classifier): treat 5xx request-validation errors as non-ret…
Soju06 May 15, 2026
88834ba
chore: map soju06@users.noreply.github.com for PR #26054 salvage
teknium1 May 24, 2026
54e61f9
fix(matrix,gateway): Matrix E2EE installs full dep set; plugins respe…
teknium1 May 24, 2026
476c897
fix(telegram): gate send() on send-path health after reconnect storms…
dskwe May 24, 2026
2f91a84
fix(agent): only strip mcp_ prefix for OAuth-injected tools (GH-25255)
hayka-pacha May 13, 2026
eea9553
fix(anthropic): skip mcp_ prefix on outgoing tool schemas when alread…
teknium1 May 24, 2026
bdc9b0e
fix(telegram): preserve new DM topic lanes
Qwinty May 19, 2026
16eed4f
test(telegram): add brand-new-topic regression for #31086
teknium1 May 24, 2026
961e34a
fix: show recap after in-session resume
SamuelZ12 Apr 11, 2026
cdf4876
fix(cli): skip tool-call-only entries in resume recap, expose limits …
ygd58 Apr 1, 2026
27c4ba9
chore(release): map zhangsamuel12@gmail.com to SamuelZ12 (PR #7480)
teknium1 May 24, 2026
5dc10ec
test(cli): reconcile resume-recap tests with skip-tool-only default a…
teknium1 May 24, 2026
13b85bc
feat(config): document resume-recap tuning keys in DEFAULT_CONFIG
teknium1 May 24, 2026
514f502
fix(debug): redact BlueBubbles webhook secrets
helix4u May 24, 2026
396ee69
fix(gateway): seed plugin extras before is_connected gate (#31703)
teknium1 May 24, 2026
80ad160
fix(kanban): refuse to rmtree workspace_path outside managed scratch …
briandevans May 19, 2026
23115b5
fix(kanban): restrict managed-scratch roots to workspaces/ dirs only
briandevans May 23, 2026
ce529d6
fix(kanban): scratch tasks must not inherit board.default_workdir (#2…
May 24, 2026
99a7ecc
chore(release): map leeseoki0 for PR #31315 salvage
teknium1 May 24, 2026
8e68426
fix(cli): add inline --yes/now skip for destructive slash commands (#…
teknium1 May 24, 2026
6c44d53
fix(cli): show full session titles in /resume list
LeonSGP43 Apr 22, 2026
4f4e337
fix(file-safety): write-deny pairing/ directory to prevent approved-l…
AhmetArif0 May 22, 2026
fef733d
feat: support numbered resume selection in cli and gateway
daizhonggeng Apr 13, 2026
8758007
chore(release): map 490408354@qq.com to daizhonggeng (PR #9020)
teknium1 May 24, 2026
c043c86
i18n+tests: add list_item_numbered, list_footer_numbered, out_of_rang…
teknium1 May 24, 2026
9c08070
test(cli): update resume usage-hint assertion for numbered selection
teknium1 May 24, 2026
fa957c0
fix(security): add missing credential paths to write denylist (#27217)
flamiinngo May 25, 2026
bba76f3
fix(file-safety): deny reads of Google OAuth tokens (#30972)
Hinotoi-agent May 25, 2026
223a397
fix(security): close TOCTOU window when saving Claude Code OAuth cred…
Gutslabs May 25, 2026
be89c2e
ci(supply-chain): anchor install-hook regex at repo root (#31744)
teknium1 May 25, 2026
4694524
fix(security): restrict write access to Anthropic OAuth credential store
kronexoi May 22, 2026
5598781
chore(release): map kronexoi for PR #30553 salvage
teknium1 May 25, 2026
243ebc7
Protect dashboard OAuth credentials with the same file-safety guarant…
shaun0927 Apr 16, 2026
dcc163e
fix(security): redact credentials before persistence in session capture
May 25, 2026
bf2f3b2
chore(release): map vgocoder for PR #24758 salvage
teknium1 May 25, 2026
782681f
fix(google_chat): harden oauth credential persistence with atomic pri…
Zyrixtrex May 25, 2026
00ec0b6
feat(tts): add register_tts_provider() plugin hook (closes #30398)
kshitijk4poor May 22, 2026
d36461d
docs(plans): add s6-overlay supervision plan (v3)
benbarclay May 21, 2026
0830213
test(docker): add conftest fixtures for docker harness
benbarclay May 21, 2026
6e6acde
test(docker): lock baseline behavior for Phase 0 harness
benbarclay May 21, 2026
a18f69e
test(docker): apply 180s timeout to docker harness tests
benbarclay May 21, 2026
440147e
test(docker): stabilize Phase 0 baseline harness
benbarclay May 21, 2026
b2168bf
ci(docker): add hadolint + shellcheck for container build inputs
benbarclay May 21, 2026
51914b0
feat(service_manager): add ServiceManager protocol + host wrappers
benbarclay May 21, 2026
e0e9c89
feat(docker)!: replace tini with s6-overlay as PID 1
benbarclay May 21, 2026
0abf661
feat(service_manager): add S6ServiceManager for runtime gateway super…
benbarclay May 21, 2026
2afefc5
feat(docker): per-profile s6 supervision + container-restart reconcil…
benbarclay May 21, 2026
a36221e
docs(s6): document container supervision; doctor + skill + user-guide…
benbarclay May 21, 2026
4b4c36c
feat(docker): remove gosu from bundled image; s6-setuidgid handles pr…
benbarclay May 22, 2026
fc39296
fix(service_manager): s6 detection works for unprivileged hermes user
benbarclay May 23, 2026
f7893df
fix(docker): support multi-arch s6-overlay install (amd64 + arm64)
benbarclay May 23, 2026
d4e452b
fix(docker): SHA256-verify s6-overlay tarballs
benbarclay May 23, 2026
fc26a5a
fix(ci): drop --entrypoint override in hermes-smoke-test action
benbarclay May 23, 2026
6dedaa4
fix(gateway): route --all stop/restart through s6 under container
benbarclay May 23, 2026
a1a53a5
docs(docker): dashboard IS supervised — update note that contradicted…
benbarclay May 23, 2026
b044c1a
fix(container_boot): always register gateway-default slot
benbarclay May 23, 2026
b28b3f5
fix(service_manager): friendly errors for missing slots and s6-svc fa…
benbarclay May 23, 2026
1dfabe4
fix(docker): dashboard slot stays 'down' when HERMES_DASHBOARD unset
benbarclay May 23, 2026
143a189
docs(compose): update entrypoint comment for s6-overlay
benbarclay May 23, 2026
d735b08
fix(service_manager): rip out dead port parameter
benbarclay May 23, 2026
9914bfc
docker: drop sh -c wrappers from stage2-hook.sh
benbarclay May 23, 2026
4443fb4
fix(container_boot): rotate container-boot.log when it exceeds 256 KiB
benbarclay May 23, 2026
d0b1ab4
fix(container_boot): publish reconciled service dirs atomically
benbarclay May 23, 2026
04bdbce
docs(docker): deprecation warning in entrypoint.sh shim
benbarclay May 23, 2026
cd5b2c4
test(docker): poll for boot-log signal instead of fixed sleeps
benbarclay May 23, 2026
6c49bdc
docs(plans): trim s6-overlay plan to a post-implementation reference
benbarclay May 23, 2026
af973e4
refactor(gateway): migrate Mattermost adapter to bundled plugin
kshitijk4poor May 23, 2026
a4092ab
fix(profiles): short-circuit s6 hooks on host before importing servic…
teknium1 May 25, 2026
031f9c9
fix(image_gen): cache xAI ephemeral URL responses to disk (#26942) (#…
teknium1 May 25, 2026
4987fd2
fix(model): disambiguate xAI OAuth picker label
helix4u May 24, 2026
af144cd
fix(model): include Premium+ in xAI OAuth label
teknium1 May 24, 2026
5cbb132
fix(ci): exclude tests/docker/ from regular test shards; pin read_tex…
teknium1 May 25, 2026
7f6f00f
test(dockerfile): accept s6-overlay /init as a known PID-1 init
teknium1 May 25, 2026
6840ca2
docs(docker): add 'Installing more tools in the container' section
benbarclay May 25, 2026
a3abeb5
Merge pull request #31775 from NousResearch/extending-docker-docs
benbarclay May 25, 2026
4f416fc
fix(docker): make s6 lifecycle work for the unprivileged hermes user
benbarclay May 25, 2026
7d54288
test(dockerfile): recognize s6-overlay/init as a valid PID-1; harden …
benbarclay May 25, 2026
c524b8a
test(docker): fix svstat 'want up' assertion in profile-gateway lifec…
benbarclay May 25, 2026
da8b2e9
ci(docker): run tests/docker/ in build-amd64 against the freshly-buil…
benbarclay May 25, 2026
323cce7
fix: exclude parent process chain from concurrent instance detection …
Strontvod May 24, 2026
46f8948
test+harden(cli): cover parent-chain walk in concurrent-instance dete…
teknium1 May 25, 2026
7e165e8
Merge pull request #31760 from NousResearch/hermes/hermes-bf5898da
benbarclay May 25, 2026
b288de8
Merge pull request #31081 from NousResearch/bb/tui-skinny-status-rule
ethernet8023 May 25, 2026
b0135c7
diag(xai-oauth): log loopback callback hits + wait-timeout outcome (#…
teknium1 May 25, 2026
1d5deac
fix(website): cross-locale doc links + drop empty ko locale (#31895)
teknium1 May 25, 2026
3b839f4
fix(context): align guidance with 64k minimum
helix4u May 25, 2026
2b76853
test(acp): drop flaky runtime_calls[-1] tail-position assertion
teknium1 May 25, 2026
d7c5d5d
fix: avoid persisting borrowed credential secrets (#31416)
H-Ali13381 May 25, 2026
aeb8750
feat(providers): add OpenAI API provider option
jacevys May 7, 2026
a6b0414
feat(providers): extend openai-api with live /v1/models fetch + gpt-5…
teknium1 May 25, 2026
9863a07
fix(cron): layer agent.disabled_toolsets onto cron baseline (#25752)
May 25, 2026
0c3e34e
chore(release): map Schrotti77 for PR #25786 salvage
teknium1 May 25, 2026
2c3ca47
fix(cron): reject id mutation + validate output paths under OUTPUT_DIR
zapabob May 25, 2026
92d9136
chore(release): map zapabob for PR #29826 salvage
teknium1 May 25, 2026
d952b37
fix: add cron API provenance logging (#24889)
sgtworkman May 25, 2026
ec4d6f1
fix(cli): show masked feedback for secret prompts
helix4u May 24, 2026
9c77a0c
fix(plugins): widen masked secret prompt to plugin setup wizards
teknium1 May 25, 2026
920b350
test(auth): align copilot-remove test with borrowed-credential policy…
teknium1 May 25, 2026
1c7a783
fix(cli,gateway): strip outer brackets/quotes from /resume args + acc…
May 25, 2026
4fbdf0e
test(cli,gateway): cover bracket-stripping and gateway session-ID lookup
teknium1 May 25, 2026
2e0ac31
chore(release): map claw@openclaw.ai to wanwan2qq (PR #10215)
teknium1 May 25, 2026
2cd952e
feat(stt): add register_transcription_provider() plugin hook
kshitijk4poor May 22, 2026
d3ffbc6
feat(stt): add stt.providers.<name> command-provider registry
teknium1 May 25, 2026
2a2cef4
fix: include -p profile flag in exit resume hint
iRonin May 25, 2026
222a3a9
test(cli): cover exit resume hint -p flag across profiles
teknium1 May 25, 2026
3914089
fix(compression): 3-line fix for infinite compression loop (#29335)
May 24, 2026
11c40d6
test+polish(compression): pin anti-thrash gate and gateway session_id…
teknium1 May 25, 2026
25295e7
fix(cli): redirect resume status lines to stderr in quiet mode (#11793)
malaiwah May 25, 2026
ffe11c1
test(cli): cover quiet-mode resume status lines routed to stderr
teknium1 May 25, 2026
76135b3
docs(i18n): translate all docs into Simplified Chinese (zh-Hans) (#31…
teknium1 May 25, 2026
2d42272
fix(codex): size and propagate timeouts for Responses-API requests; l…
kasunvinod May 25, 2026
9366064
fix: harden skill trust source matching (#31229)
jfuenmayor May 25, 2026
0a2ee71
fix(skill): guard pickle.loads in darwinian-evolver show_snapshot wit…
Jiahui-Gu May 25, 2026
7ebebfb
Harden Skills Guard multi-word prompt patterns (#26852)
YLChen-007 May 25, 2026
00bd24e
fix(security): expand memory content scanning patterns to parity with…
AdamPlatin123 May 25, 2026
5faea3f
fix(file_tools): reject '..' traversal in V4A patch headers
waefrebeorn May 25, 2026
c016949
chore(release): map jfuenmayor + Jiahui-Gu + YLChen-007 + AdamPlatin1…
teknium1 May 25, 2026
0219b04
perf(cli): cut hermes startup 63% — flip head-to-head vs codex (#31968)
teknium1 May 25, 2026
3ab7e2a
harden(env_passthrough): apply GHSA-rhgp-j443-p4rf filter to config.y…
roadhero May 25, 2026
4cb3eb0
fix(approval): harden YOLO bypass, LLM parsing, auto-approve audit, p…
rodrigoeqnit May 25, 2026
79fc92e
fix(security): tighten .env file permissions to 0600 at all creation …
dusterbloom May 25, 2026
51c913c
chore(release): map dusterbloom for PR #25726 salvage
teknium1 May 25, 2026
ba3c450
fix(security): block read_file on project-local .env files
liuhao1024 May 6, 2026
4c64638
chore(release): map liuhao1024 for PR #20778 salvage
teknium1 May 25, 2026
b1adb95
fix(codex): surface actionable hint when stale-call detector fires on…
Tranquil-Flow May 25, 2026
fae815a
fix(cli): prevent /reset and /new freeze on Windows by falling back t…
SimoKiihamaki May 25, 2026
ee7789e
chore(release): map simo.kiihamaki@gmail.com to SimoKiihamaki (PR #30…
teknium1 May 25, 2026
63d6b9e
fix(cli): catch KeyboardInterrupt during slash commands to prevent se…
ygd58 May 25, 2026
8697471
test(cli): cover KeyboardInterrupt guard around slash command dispatch
teknium1 May 25, 2026
1b12cd5
fix(cli): bracketed-paste timeout prevents permanent input freeze (#1…
Tranquil-Flow May 25, 2026
4909dd8
chore(release): map 66773372+Tranquil-Flow@users.noreply.github.com t…
teknium1 May 25, 2026
b7b8bec
fix(security): block /proc/*/environ, cmdline, maps from file read (#…
dsr-restyn May 25, 2026
ee59ef1
fix: reject read_file symlinks to blocking devices (#10133)
WuKongAI-CMU May 25, 2026
95848b1
fix(transcription): reject symlinked audio inputs (#10082)
WuKongAI-CMU May 25, 2026
79799c8
test(approval): patch _YOLO_MODE_FROZEN directly in test_yolo_overrid…
teknium1 May 25, 2026
0d55315
fix(backup): skip symlinked files in zip archives (#25289)
binhnt92 May 25, 2026
46d8b5d
fix(profile): reject symlinks in distributions (#25292)
binhnt92 May 25, 2026
ac5359a
fix(streaming): route mid-tool-call partial-stream-stub through lengt…
daimon-nous[bot] May 25, 2026
5f20322
fix(tts): reject '..' traversal in output_path
aaronlab May 25, 2026
bd2756d
fix(update): reject symlink members in update ZIP
codeblackhole1024 May 25, 2026
e9119e0
chore(release): map dsr-restyn + WuKongAI-CMU + codeblackhole1024 for…
teknium1 May 25, 2026
0ff7c09
feat(mcp-oauth): stdin paste-back fallback for headless OAuth flow (#…
teknium1 May 25, 2026
a989a79
fix(gateway): allow native delivery of freshly-produced agent files (…
teknium1 May 25, 2026
8601c4d
fix(codex): add time-to-first-byte watchdog for stalled Codex streams
adam91holt May 25, 2026
2b16de0
chore(release): map adam91holt for PR #31984 salvage
teknium1 May 25, 2026
1c3c364
feat(cli): show live background terminal-process count in status bar …
teknium1 May 25, 2026
bdf3696
docs(mcp-oauth): document paste-back flow and SSH options for remote …
teknium1 May 25, 2026
8191f66
feat(mcp-oauth): accept 'skip' at paste prompt to bypass auth without…
teknium1 May 25, 2026
064ac28
fix(tui): remove 'q' alias from /quit, add to /queue
8bit64k Apr 23, 2026
85a0b34
test(tui): regression test for /q alias resolving to queue (#31983)
alt-glitch May 25, 2026
f5bb595
chore(release): map 8bit64k + hclsys in AUTHOR_MAP
alt-glitch May 25, 2026
46c1ae8
fix(tests): four pre-existing flakes from the security cluster merge …
teknium1 May 25, 2026
dbe5d84
fix(auxiliary): universal main-model fallback for aux tasks (#31845)
wysie May 25, 2026
0d137f1
feat(errors): actionable guidance for Nous OAuth 401s (#32082)
teknium1 May 25, 2026
3b9b9a7
fix(skills): guard uninstall lock paths
zapabob May 25, 2026
0a6a0ba
test(skills): widen assertion in PR#6656 regression to accept new val…
teknium1 May 25, 2026
973bb12
fix(credential-pool): rotate immediately when credential already exha…
zccyman May 18, 2026
ab42658
feat: configurable paste collapse thresholds (TUI + CLI)
kylekahraman May 13, 2026
8f19485
chore(release): map kylekahraman email to GitHub login
teknium1 May 25, 2026
4117fc3
fix(credential-pool): correct pool rotation when weekly usage limit i…
savanne-kham May 24, 2026
0ec0caf
Merge pull request #31084 from NousResearch/bb/tui-right-click-copy-s…
OutThisLife May 25, 2026
50aaf0c
fix(tui): delineate assistant responses from details (#31087)
OutThisLife May 25, 2026
99d62f6
fix(gateway): protect in-flight subagents from busy-mode interrupts (…
xxxigm May 22, 2026
737ee81
test(gateway): regression tests for #30170 subagent interrupt protection
xxxigm May 22, 2026
b62af47
chore: drop stale line-number reference in PRIORITY path comment
alt-glitch May 25, 2026
1d73d5f
fix(tts): prevent double [pause] in xAI auto speech tags for multi-pa…
EloquentBrush0x May 20, 2026
5caeb65
test(tts): regression coverage for #29417 double-[pause] fix
teknium1 May 25, 2026
5671461
feat(skills): add code-wiki skill — closes #486 (#32240)
teknium1 May 25, 2026
386f245
feat(skills): add optional openhands skill — closes #477
teknium1 May 25, 2026
263e008
feat(skills): add web-pentest optional skill (#32265)
teknium1 May 25, 2026
bbc8f2f
chore(models): drop retired grok-4-1-fast from metadata, tests, docs
May 20, 2026
b6ce7a4
chore(release): add ronhi for PR #29523 salvage
teknium1 May 25, 2026
0dee92d
feat(security): promptware defense — shared threat patterns + memory …
teknium1 May 25, 2026
415be55
fix: route Telegram DM topic deliveries directly
stepanov1975 May 16, 2026
6b7da11
test: isolate API server env in gateway tests
stepanov1975 May 16, 2026
96c71d8
fix: require anchors for Telegram DM topic deliveries
stepanov1975 May 16, 2026
dcd504c
fix: auto-create Telegram DM topics for delivery
stepanov1975 May 16, 2026
c394e79
fix: refresh stale Telegram DM topic threads
stepanov1975 May 16, 2026
5b1c75d
refactor: simplify Telegram DM topic refresh
stepanov1975 May 16, 2026
926da69
test(telegram): switch transient-flake retry test to group chat
teknium1 May 25, 2026
27df4b3
fix(telegram): exempt reply_to_mode=off DM topic sends from anchor-re…
teknium1 May 25, 2026
30928f9
fix(dashboard): suffix-allowlist plugin assets + denylist subprocess-…
teknium1 May 25, 2026
c2aa235
fix(agent): log outer-loop exceptions at ERROR with traceback (#32264)
teknium1 May 25, 2026
6bd0be3
feat(patch): indentation preservation, CRLF preservation, per-file fa…
teknium1 May 25, 2026
de76f4d
fix(secrets): only apply external secrets once per HERMES_HOME per pr…
teknium1 May 25, 2026
2c6bbaf
fix(gateway): coerce scalar `model:` to dict before /model --global p…
teknium1 May 25, 2026
e3236e9
fix(anthropic): API-key path skips OAuth autodiscovery + prunes stale…
teknium1 May 25, 2026
ccd8993
fix(cron): split scanner into two tiers so skill prose stops false-po…
teknium1 May 26, 2026
fe9744c
chore(release): map ffr31mr + TheOnlyMika in AUTHOR_MAP
teknium1 May 26, 2026
c26af46
fix(skills): reject symlinks in skill bundles before install
MorAlekss May 26, 2026
cea87d9
fix(skills-hub): show every catalog source on /docs/skills (skills.sh…
teknium1 May 26, 2026
d8703e2
feat(skills-hub): health checks, freshness badge, and a watchdog cron…
teknium1 May 26, 2026
66851dc
chore: add krislidimo to AUTHOR_MAP for PR #29775 (#32434)
kshitijk4poor May 26, 2026
9d10c45
fix(telegram): tighten table row-group spacing and drop redundant fir…
krislidimo May 21, 2026
f4953bc
fix(subdirectory_hints): prevent loading AGENTS.md outside workspace
May 25, 2026
5744b17
harden: restrict markdown link schemes; parse untrusted XML with defu…
TheOnlyMika May 25, 2026
31c8d5f
chore(wecom): make defusedxml dep acquireable and tolerant of absence
teknium1 May 26, 2026
2517917
fix(cli): restore fallback paste collapse + handle long single-line p…
teknium1 May 26, 2026
37be8bc
Merge upstream/main into sync branch, resolve 6 conflicts
May 26, 2026
b6c63bb
deps: bump inkbox SDK floor 0.4.0 -> 0.4.5
May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 5 additions & 2 deletions .github/actions/hermes-smoke-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,13 @@ runs:
- name: hermes --help
shell: bash
run: |
# Use the image's real ENTRYPOINT (/init + main-wrapper.sh) so
# this exercises the actual production startup path. PR #30136
# review caught that an --entrypoint override here had been
# silently neutered by the s6-overlay migration — stage2-hook
# ignores its CMD args, so the smoke test was a no-op.
docker run --rm \
-v /tmp/hermes-test:/opt/data \
--entrypoint /opt/hermes/docker/entrypoint.sh \
"${{ inputs.image }}" --help

- name: hermes dashboard --help
Expand All @@ -43,5 +47,4 @@ runs:
# installed package.
docker run --rm \
-v /tmp/hermes-test:/opt/data \
--entrypoint /opt/hermes/docker/entrypoint.sh \
"${{ inputs.image }}" dashboard --help
19 changes: 11 additions & 8 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,23 @@ jobs:
- name: Install PyYAML for skill extraction
run: pip install pyyaml==6.0.2 httpx==0.28.1

- name: Build skills index (unified multi-source catalog)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Always rebuild — the file isn't committed (gitignored), so a
# fresh checkout starts without it and we want the freshest crawl
# in every deploy. Failure is non-fatal: extract-skills.py will
# fall back to the legacy snapshot cache and the Skills Hub page
# still renders, just without the latest community catalog.
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py

- name: Regenerate per-skill docs pages + catalogs
run: python3 website/scripts/generate-skill-docs.py

- name: Build skills index (if not already present)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ! -f website/static/api/skills-index.json ]; then
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"
fi

- name: Install dependencies
run: npm ci
working-directory: website
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/docker-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Docker / shell lint

# Lints the container build inputs: Dockerfile (via hadolint) and any shell
# scripts under docker/ (via shellcheck). These catch the class of regression
# the behavioral docker-publish smoke test can't — unquoted variable
# expansions, silently-failing RUN commands, etc.
#
# Rules and ignores are documented in .hadolint.yaml at the repo root.
# shellcheck severity is pinned to `error` so SC1091-style "can't follow
# sourced script" info-level warnings don't fail the job — the .venv
# activate script doesn't exist at lint time.

on:
push:
branches: [main]
paths:
- Dockerfile
- docker/**
- .hadolint.yaml
- .github/workflows/docker-lint.yml
pull_request:
branches: [main]
paths:
- Dockerfile
- docker/**
- .hadolint.yaml
- .github/workflows/docker-lint.yml

permissions:
contents: read

concurrency:
group: docker-lint-${{ github.ref }}
cancel-in-progress: true

jobs:
hadolint:
name: Lint Dockerfile (hadolint)
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: hadolint
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf # v3.1.0
with:
dockerfile: Dockerfile
config: .hadolint.yaml
failure-threshold: warning

shellcheck:
name: Lint docker/ shell scripts (shellcheck)
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: shellcheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
env:
# Severity = error: SC1091 (can't follow sourced script) is info-
# level and would otherwise fail when the venv activate script
# doesn't exist at lint time.
SHELLCHECK_OPTS: --severity=error
with:
scandir: ./docker
Loading
Loading