Gustavo Madeira Santana
8217d77ece
fix(cli): run plugin gateway_stop hooks before message exit ( #16580 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 8542ac77ae
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-14 17:33:08 -05:00
Peter Steinberger
00b7ab7db7
fix(gateway): remove unused device auth import
2026-02-14 22:01:12 +01:00
Peter Steinberger
d8a2c80cd7
fix(gateway): prefer explicit token over stored auth
2026-02-14 22:01:11 +01:00
Peter Steinberger
c06a962bb6
test(e2e): stabilize suite
2026-02-14 22:01:11 +01:00
Peter Steinberger
dff3f8c271
chore: fix lint after invoke result handler split
2026-02-14 20:11:57 +00:00
Peter Steinberger
615c9c3c9c
perf(test): avoid gateway boot for late invoke results
2026-02-14 20:11:57 +00:00
Peter Steinberger
b1dd23f61d
perf(test): mock config stack in tools invoke http tests
2026-02-14 18:46:24 +00:00
Peter Steinberger
4d4296cae5
perf(test): speed up gateway tools invoke HTTP tests
2026-02-14 18:46:24 +00:00
Robby
cab0abf52a
fix(sessions): resolve transcript paths with explicit agent context ( #16288 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7cbe9deca9
Co-authored-by: robbyczgw-cla <239660374+robbyczgw-cla@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-14 13:44:51 -05:00
Peter Steinberger
01b3226ecb
fix(gateway): block node.invoke exec approvals
2026-02-14 19:22:37 +01:00
Peter Steinberger
4b9cb46c6e
refactor(outbound): dedupe poll threading + tighten duration semantics
2026-02-14 19:03:46 +01:00
Peter Steinberger
cb3290fca3
fix(node-host): enforce system.run rawCommand/argv consistency
2026-02-14 18:53:23 +01:00
Robby
8e5689a84d
feat(telegram): add sendPoll support ( #16193 ) ( #16209 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: b58492cfed
Co-authored-by: robbyczgw-cla <239660374+robbyczgw-cla@users.noreply.github.com >
Co-authored-by: steipete <58493+steipete@users.noreply.github.com >
Reviewed-by: @steipete
2026-02-14 18:34:30 +01:00
Robby
baa3bf270b
fix(webchat): filter NO_REPLY token from streaming and final replies ( #16286 )
...
The webchat channel sent NO_REPLY as visible text to clients instead
of suppressing it. Other channels (Telegram, Discord) already filter
this token via the reply dispatcher, but the webchat streaming path
bypassed this check.
Fixes #16269
2026-02-14 18:26:19 +01:00
Peter Steinberger
d3428053d9
fix: redact config values in skills status
2026-02-14 17:35:16 +01:00
Peter Steinberger
268c14f021
refactor(tools): centralize default policy steps
2026-02-14 15:39:45 +00:00
Peter Steinberger
f97ad8f288
refactor(tools): share tool policy pipeline
2026-02-14 15:39:45 +00:00
Peter Steinberger
b769b65b48
refactor(browser): share proxy file helpers
2026-02-14 15:39:45 +00:00
Peter Steinberger
7fc1026746
refactor(gateway): share agent prompt builder
2026-02-14 15:39:45 +00:00
Peter Steinberger
31791233d6
fix(security): reject oversized base64 before decode
2026-02-14 15:45:41 +01:00
Peter Steinberger
35c0e66ed0
fix(security): harden hooks module loading
2026-02-14 15:03:27 +01:00
Peter Steinberger
3d0a41b584
test(gateway): isolate device identity in auth e2e
2026-02-14 14:57:19 +01:00
Peter Steinberger
3bbd29bef9
perf(gateway): cache session list transcript fields
2026-02-14 12:52:51 +00:00
Peter Steinberger
a0361b8ba9
fix(security): restrict hook transform module loading
2026-02-14 13:46:09 +01:00
Peter Steinberger
a2b45e1c13
fix(gateway): relax http tool deny typing
2026-02-14 13:30:05 +01:00
Peter Steinberger
0af76f5f0e
refactor(gateway): centralize node.invoke param sanitization
2026-02-14 13:27:45 +01:00
Peter Steinberger
c15946274e
fix(gateway): allowlist system.run params
2026-02-14 13:27:45 +01:00
Peter Steinberger
a7af646fdf
fix(gateway): bind approval ids to device identity
2026-02-14 13:27:45 +01:00
Peter Steinberger
318379cdba
fix(gateway): bind system.run approvals to exec approvals
2026-02-14 13:27:45 +01:00
Peter Steinberger
233483d2b9
refactor(security): centralize dangerous tool lists
2026-02-14 13:27:05 +01:00
Peter Steinberger
586176730c
perf(gateway): optimize sessions/ws/routing
2026-02-14 12:21:44 +00:00
Peter Steinberger
a7a08b6650
test(gateway): cover tools allow/deny precedence
2026-02-14 13:18:49 +01:00
Peter Steinberger
eb4215d570
perf(test): speed up Vitest bootstrap
2026-02-14 12:13:27 +00:00
Nick Taylor
1fb52b4d7b
feat(gateway): add trusted-proxy auth mode ( #15940 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 279d4b304f
Co-authored-by: nickytonline <833231+nickytonline@users.noreply.github.com >
Co-authored-by: steipete <58493+steipete@users.noreply.github.com >
Reviewed-by: @steipete
2026-02-14 12:32:17 +01:00
Peter Steinberger
98bb4225fd
perf(test): minimize gateway startup in vitest
2026-02-14 05:25:40 +00:00
Artale
31d8546afd
fix(gateway): hide phantom main agent when agents.list is configured (openclaw#12364) thanks @arosstale
...
Verified:
- pnpm build
- pnpm check
- pnpm test
Co-authored-by: arosstale <117890364+arosstale@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-13 18:56:10 -06:00
AkosCz
a4f4b0636f
fix: preserve ${VAR} env var references when writing config back to disk ( #11560 )
...
* fix: preserve ${VAR} env var references when writing config back to disk
Fixes #11466
When config is loaded, ${VAR} references are resolved to their plaintext
values. Previously, writeConfigFile would serialize the resolved values,
silently replacing "${ANTHROPIC_API_KEY}" with "sk-ant-api03-..." in the
config file.
Now writeConfigFile reads the current file pre-substitution, and for each
value that matches what a ${VAR} reference would resolve to, restores the
original reference. Values the caller intentionally changed are kept as-is.
This fixes all 50+ writeConfigFile call sites (doctor, configure wizard,
gateway config.set/apply/patch, plugins, hooks, etc.) without requiring
any caller changes.
New files:
- src/config/env-preserve.ts — restoreEnvVarRefs() utility
- src/config/env-preserve.test.ts — 11 unit tests
* fix: remove global config env snapshot race
* docs(changelog): note config env snapshot race fix
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-14 01:53:17 +01:00
AI-Reviewer-QS
28431b84cc
fix(gateway): prune expired entries instead of clearing all hook auth failure state ( #15848 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 188a40e8a3
Co-authored-by: AI-Reviewer-QS <255312808+AI-Reviewer-QS@users.noreply.github.com >
Co-authored-by: steipete <58493+steipete@users.noreply.github.com >
Reviewed-by: @steipete
2026-02-14 01:46:12 +01:00
Peter Steinberger
3a73e2508b
perf(gateway): skip idle channel shutdown work
2026-02-13 23:57:03 +00:00
Peter Steinberger
79bd82a35b
perf(test): statically import gateway reload deps
2026-02-13 23:52:20 +00:00
Peter Steinberger
4bef423d83
perf(test): reduce gateway reload waits and trim duplicate invoke coverage
2026-02-13 23:50:08 +00:00
Peter Steinberger
d5e25e0ad8
refactor: centralize dispatcher lifecycle ownership
2026-02-14 00:41:37 +01:00
Peter Steinberger
5caf829d28
perf(test): trim duplicate gateway and auto-reply test overhead
2026-02-13 23:40:38 +00:00
Peter Steinberger
ad57e561c6
refactor: unify gateway restart deferral and dispatcher cleanup
2026-02-14 00:38:18 +01:00
Peter Steinberger
2378d770d1
perf(test): speed gateway suite resets with unique config roots
2026-02-13 23:33:08 +00:00
Bridgerz
ab4a08a82a
fix: defer gateway restart until all replies are sent ( #12970 )
...
* fix: defer gateway restart until all replies are sent
Fixes a race condition where gateway config changes (e.g., enabling
plugins via iMessage) trigger an immediate SIGUSR1 restart, killing the
iMessage RPC connection before replies are delivered.
Both restart paths (config watcher and RPC-triggered) now defer until
all queued operations, pending replies, and embedded agent runs complete
(polling every 500ms, 30s timeout). A shared emitGatewayRestart() guard
prevents double SIGUSR1 when both paths fire simultaneously.
Key changes:
- Dispatcher registry tracks active reply dispatchers globally
- markComplete() called in finally block for guaranteed cleanup
- Pre-restart deferral hook registered at gateway startup
- Centralized extractDeliveryInfo() for session key parsing
- Post-restart sentinel messages delivered directly (not via agent)
- config-patch distinguished from config-apply in sentinel kind
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix: single-source gateway restart authorization
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-14 00:29:29 +01:00
nabbilkhan
207e2c5aff
fix: add outbound delivery crash recovery ( #15636 ) (thanks @nabbilkhan) ( #15636 )
...
Co-authored-by: Shadow <hi@shadowing.dev >
2026-02-13 15:54:07 -06:00
Peter Steinberger
2086cdfb9b
perf(test): reduce hot-suite import and setup overhead
2026-02-13 20:26:39 +00:00
Peter Steinberger
6442512954
perf: reduce hotspot test startup and timeout costs
2026-02-13 20:03:01 +00:00
Marcus Castro
31537c669a
fix: archive old transcript files on /new and /reset ( #14949 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 4724df7dea
Co-authored-by: mcaxtr <7562095+mcaxtr@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-13 14:55:16 -05:00