Peter Steinberger
1b327da6e3
fix: harden exec sandbox fallback semantics ( #23398 ) (thanks @bmendonca3)
2026-02-22 11:12:01 +01:00
Frank Yang
1051f42f96
fix(stability): patch regex retries and timeout abort handling
2026-02-22 10:59:34 +01:00
Peter Steinberger
6dad6a8cd0
fix: cover channels.modelByChannel validation/auto-enable
2026-02-22 10:41:40 +01:00
pickaxe
d79f10297f
also skip modelByChannel in plugin-auto-enable channel iteration
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:41:40 +01:00
pickaxe
0d93c9f759
fix: include modelByChannel in config validator allowedChannels
...
The hand-written config validator rejects `channels.modelByChannel` as
"unknown channel id: modelByChannel" even though the Zod schema, TypeScript
types, runtime code, and CLI docs all treat it as valid. The `defaults`
meta-key was already whitelisted but `modelByChannel` was missed when
the feature was added in 2026.2.21.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 10:41:40 +01:00
Vignesh Natarajan
2a66c8d676
Agents/Subagents: honor subagent alsoAllow grants
2026-02-22 00:39:27 -08:00
Peter Steinberger
c99e7696e6
fix: decouple owner display secret from gateway auth token
2026-02-22 09:35:07 +01:00
Peter Steinberger
ce09fe2bb7
test(config): use lightweight clear in session pruning e2e setup
2026-02-22 08:30:47 +00:00
Peter Steinberger
265da4dd2a
fix(security): harden gateway command/audit guardrails
2026-02-22 08:45:48 +01:00
Peter Steinberger
b109fa53ea
refactor(core): dedupe gateway runtime and config tests
2026-02-22 07:44:57 +00:00
Peter Steinberger
271999d42a
test(config): dedupe nested redaction round-trip assertions
2026-02-22 07:44:57 +00:00
Peter Steinberger
71c17da2ba
test(config): dedupe traversal include assertions
2026-02-22 07:44:57 +00:00
Peter Steinberger
44a272ef67
refactor(config): dedupe legacy stream-mode migration paths
2026-02-22 07:44:57 +00:00
Peter Steinberger
e0db04a50d
fix(security): harden avatar validation and size limits
2026-02-22 08:35:32 +01:00
Vignesh Natarajan
29a782b9cd
Models/Config: default missing Anthropic model api fields
2026-02-21 22:50:43 -08:00
Vignesh Natarajan
73b4330d4c
CLI/Config: keep explicitly unset keys removed
2026-02-21 21:08:04 -08:00
Vignesh
3317b49d3b
feat(memory): allow QMD searches via mcporter keep-alive (openclaw#19617) thanks @vignesh07
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: vignesh07 <1436853+vignesh07@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-02-21 18:54:33 -06:00
Peter Steinberger
98790339ef
test: dedupe repeated validation and throw assertions
2026-02-21 23:28:07 +00:00
Peter Steinberger
b97691f3a7
test(config): avoid duplicate include resolution in throw assertions
2026-02-21 23:28:06 +00:00
Peter Steinberger
95dab6e019
fix: harden config prototype-key guards ( #22968 ) (thanks @Clawborn)
2026-02-22 00:25:22 +01:00
Clawborn
e23c08b5f4
Fix prototype pollution in applyMergePatch via blocked key filter
...
applyMergePatch in merge-patch.ts iterates Object.entries(patch) without
filtering dangerous keys. When a caller passes a JSON-parsed object with
a "__proto__" key, the loop assigns result["__proto__"] = value, which
replaces the prototype of result and pollutes Object.prototype for the
entire process.
Add a BLOCKED_KEYS set ({"__proto__", "constructor", "prototype"}) and
skip those keys during iteration, matching the guard already present in
deepMerge (includes.ts) via isBlockedObjectKey.
Adds four tests covering __proto__, constructor, prototype, and nested
__proto__ injection.
Co-authored-by: Clawborn <tianrun.yang103@gmail.com>
2026-02-22 00:25:22 +01:00
Peter Steinberger
8752203f59
refactor(test): stabilize case tables and readonly helper inputs
2026-02-22 00:10:07 +01:00
Peter Steinberger
5164822cd5
test: table-drive status reactions and session key cases
2026-02-21 23:02:44 +00:00
Brian Mendonca
21087c5c70
test: fix rebase-introduced tsgo regressions
2026-02-21 23:57:34 +01:00
Brian Mendonca
a186036814
test: fix latest tsgo inference regressions in test suites
2026-02-21 23:57:34 +01:00
Brian Mendonca
c7c047287e
test: fix readonly typing regressions in check baseline
2026-02-21 23:57:34 +01:00
Gustavo Madeira Santana
0e1aa77928
chore(tsgo/format): fix CI errors
2026-02-21 17:51:56 -05:00
Gustavo Madeira Santana
2f46308d5a
refactor(logging): migrate non-agent internal console calls to subsystem logger ( #22964 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: b4a5b12422
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-21 17:44:00 -05:00
Peter Steinberger
0608587bc3
test: streamline config, audit, and qmd coverage
2026-02-21 22:23:43 +00:00
Peter Steinberger
861718e4dc
test: group remaining suite cleanups
2026-02-21 21:44:57 +00:00
Peter Steinberger
5d9e7c942c
test: consolidate agent command and config scenarios
2026-02-21 21:44:01 +00:00
Peter Steinberger
1794f42ac0
test(config): dedupe io fixture wiring and cover legacy config-path override
2026-02-21 21:40:39 +00:00
Peter Steinberger
7036352d94
test(config): dedupe temp roots and cover legacy state-dir fallback
2026-02-21 21:40:39 +00:00
Peter Steinberger
194ebd9e30
refactor(test): dedupe env setup in envelope and config tests
2026-02-21 19:13:47 +00:00
Peter Steinberger
7724abeee0
refactor(test): dedupe env setup across suites
2026-02-21 19:13:46 +00:00
Peter Steinberger
25e89cc863
fix(security): harden shell env fallback
2026-02-21 20:01:08 +01:00
Peter Steinberger
6ffca36284
fix(config): add shared streaming resolver module
2026-02-21 19:53:42 +01:00
Peter Steinberger
2c14b0cf4c
refactor(config): unify streaming config across channels
2026-02-21 19:53:42 +01:00
Onur
8178ea472d
feat: thread-bound subagents on Discord ( #21805 )
...
* docs: thread-bound subagents plan
* docs: add exact thread-bound subagent implementation touchpoints
* Docs: prioritize auto thread-bound subagent flow
* Docs: add ACP harness thread-binding extensions
* Discord: add thread-bound session routing and auto-bind spawn flow
* Subagents: add focus commands and ACP/session binding lifecycle hooks
* Tests: cover thread bindings, focus commands, and ACP unbind hooks
* Docs: add plugin-hook appendix for thread-bound subagents
* Plugins: add subagent lifecycle hook events
* Core: emit subagent lifecycle hooks and decouple Discord bindings
* Discord: handle subagent bind lifecycle via plugin hooks
* Subagents: unify completion finalizer and split registry modules
* Add subagent lifecycle events module
* Hooks: fix subagent ended context key
* Discord: share thread bindings across ESM and Jiti
* Subagents: add persistent sessions_spawn mode for thread-bound sessions
* Subagents: clarify thread intro and persistent completion copy
* test(subagents): stabilize sessions_spawn lifecycle cleanup assertions
* Discord: add thread-bound session TTL with auto-unfocus
* Subagents: fail session spawns when thread bind fails
* Subagents: cover thread session failure cleanup paths
* Session: add thread binding TTL config and /session ttl controls
* Tests: align discord reaction expectations
* Agent: persist sessionFile for keyed subagent sessions
* Discord: normalize imports after conflict resolution
* Sessions: centralize sessionFile resolve/persist helper
* Discord: harden thread-bound subagent session routing
* Rebase: resolve upstream/main conflicts
* Subagents: move thread binding into hooks and split bindings modules
* Docs: add channel-agnostic subagent routing hook plan
* Agents: decouple subagent routing from Discord
* Discord: refactor thread-bound subagent flows
* Subagents: prevent duplicate end hooks and orphaned failed sessions
* Refactor: split subagent command and provider phases
* Subagents: honor hook delivery target overrides
* Discord: add thread binding kill switches and refresh plan doc
* Discord: fix thread bind channel resolution
* Routing: centralize account id normalization
* Discord: clean up thread bindings on startup failures
* Discord: add startup cleanup regression tests
* Docs: add long-term thread-bound subagent architecture
* Docs: split session binding plan and dedupe thread-bound doc
* Subagents: add channel-agnostic session binding routing
* Subagents: stabilize announce completion routing tests
* Subagents: cover multi-bound completion routing
* Subagents: suppress lifecycle hooks on failed thread bind
* tests: fix discord provider mock typing regressions
* docs/protocol: sync slash command aliases and delete param models
* fix: add changelog entry for Discord thread-bound subagents (#21805 ) (thanks @onutc)
---------
Co-authored-by: Shadow <hi@shadowing.dev>
2026-02-21 16:14:55 +01:00
Peter Steinberger
f48698a50b
fix(security): harden sandbox browser network defaults
2026-02-21 14:02:53 +01:00
Peter Steinberger
be7f825006
refactor(gateway): harden proxy client ip resolution
2026-02-21 13:36:23 +01:00
Ayaan Zaidi
8b1fe0d1e2
fix(telegram): split streaming preview per assistant block ( #22613 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 26f35f4411
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-21 18:05:23 +05:30
Peter Steinberger
f265d45840
fix(tts): make model provider overrides opt-in
2026-02-21 13:16:07 +01:00
Peter Steinberger
f202e73077
refactor(security): centralize host env policy and harden env ingestion
2026-02-21 13:04:39 +01:00
Peter Steinberger
08e020881d
refactor(security): unify command gating and blocked-key guards
2026-02-21 13:04:37 +01:00
Peter Steinberger
99048dbec2
fix(gateway): align insecure-auth toggle messaging
2026-02-21 12:57:22 +01:00
Peter Steinberger
fbb79d4013
fix(security): harden runtime command override gating
2026-02-21 12:49:57 +01:00
Peter Steinberger
2cdbadee1f
fix(security): block startup-file env injection across host execution paths
2026-02-21 11:44:20 +01:00
Ayaan Zaidi
677384c519
refactor: simplify Telegram preview streaming to single boolean ( #22012 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: a4017d3b94
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-21 15:19:13 +05:30
Ayaan Zaidi
e1cb73cdeb
fix: unblock Docker build by aligning commands schema default ( #22558 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 1ad610176d
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-02-21 14:47:28 +05:30