Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
364 commits
Select commit Hold shift + click to select a range
78e7f41
docs: detail per-agent prompt caching configuration
steipete Feb 23, 2026
5de1f54
CLI: fix gateway restart health ownership for child listener pids (#2…
gumadeiras Feb 23, 2026
d00d814
fix(gateway): include platform and reason in node command rejection e…
justinhuangcode Feb 23, 2026
bb8f538
Browser relay: accept raw gateway token in extension auth
Kemalau Feb 23, 2026
216d99e
fix(browser): derive relay auth token from gateway token in Chrome ex…
Feb 23, 2026
bd8b9af
fix(exec): bind env-prefixed shell wrappers to full approval text
Feb 23, 2026
f18f087
fix(skills): make quick_validate work without PyYAML
Feb 23, 2026
42373b6
fix(skills): support multiline frontmatter fallback without PyYAML
steipete Feb 23, 2026
d266d12
refactor(exec): simplify env-prefixed wrapper modifier check
steipete Feb 23, 2026
bf373ee
refactor: harden reset notice + cron delivery target flow
steipete Feb 23, 2026
8d69251
fix(doctor): use gateway health status for memory search key check (#…
therk Feb 23, 2026
47723b6
refactor(test): de-duplicate msteams and bash test helpers
steipete Feb 23, 2026
2931e21
docs: add GitHub comment formatting/linking guardrails
steipete Feb 23, 2026
420c183
fix(test): tier local vitest worker defaults by host memory
ngutman Feb 23, 2026
8b3eee7
fix: tier local vitest worker defaults by host memory (#24719) (thank…
ngutman Feb 23, 2026
40db3fe
fix(agents): cache bootstrap snapshots per session key
steipete Feb 23, 2026
cf38339
fix(tools): improve session_status cache-aware usage reporting
steipete Feb 23, 2026
31e4c21
fix(auto-reply): move volatile inbound flags out of system metadata
steipete Feb 23, 2026
46dee26
docs(reference): add prompt-caching guide and knobs
steipete Feb 23, 2026
fe62711
test(gate): stabilize env- and timing-sensitive process/web-search ch…
steipete Feb 23, 2026
7a40d99
refactor(cron): extract delivery dispatch + harden reset notices
steipete Feb 23, 2026
69b17a3
docs(reference): add cache trace diagnostics knobs to prompt-caching …
steipete Feb 23, 2026
87603b5
fix: sync built-in channel enablement across config paths
steipete Feb 23, 2026
c88915b
test: consolidate trigger handling suites
steipete Feb 23, 2026
9af3ec9
fix(gateway): add HSTS header hardening and docs
steipete Feb 23, 2026
32e6ccb
test(cron): cover announce failure when best-effort is off
steipete Feb 23, 2026
cba8037
test: prune redundant trigger handling integration coverage
steipete Feb 23, 2026
63e4dfa
test: consolidate pi-tools gating assertions
steipete Feb 23, 2026
5a47525
fix(telegram): suppress reasoning-only leaks when reasoning is off
steipete Feb 23, 2026
3b5a276
test: speed up supervisor test timing
steipete Feb 23, 2026
1f5e644
test: remove redundant pi embedded runner cases
steipete Feb 23, 2026
75423a0
refactor: deduplicate shared helpers and test setup
steipete Feb 23, 2026
7e5f771
test: speed up skills test suites
steipete Feb 23, 2026
426f803
test: speed up sessions_spawn tool harness
steipete Feb 23, 2026
31ca7fb
test: consolidate directive behavior test scenarios
steipete Feb 23, 2026
0ae7f47
test: normalize skill prompt path assertions on windows
steipete Feb 23, 2026
0183610
refactor: de-duplicate channel runtime and payload helpers
steipete Feb 23, 2026
b8fc8e7
test: optimize directive behavior test scenarios
steipete Feb 23, 2026
b9f01e8
test: consolidate directive behavior suites for faster runs
steipete Feb 23, 2026
ca761d6
test: consolidate gateway auth test scenarios
steipete Feb 23, 2026
ecd278b
test: merge redundant telegram media path scenarios
steipete Feb 23, 2026
8b192be
test: combine web reconnect progression assertions
steipete Feb 23, 2026
2875862
test: consolidate sandbox docker merge scenarios
steipete Feb 23, 2026
c248c51
test: collapse sandbox agent config duplicate cases
steipete Feb 23, 2026
cd5f3fe
test(config): consolidate env/include scenario coverage
steipete Feb 23, 2026
b922ecb
test(security): reduce duplicate audit assertions
steipete Feb 23, 2026
29b1945
test(commands): collapse provider and endpoint matrices
steipete Feb 23, 2026
eff3c5c
Session/Cron maintenance hardening and cleanup UX (#24753)
gumadeiras Feb 23, 2026
0cc46d7
test: consolidate auth-choice tests for faster coverage
steipete Feb 23, 2026
ddb7ec9
test: speed up cron test polling and waits
steipete Feb 23, 2026
13f32e2
feat: Add Kilo Gateway provider (#20212)
jrf0110 Feb 23, 2026
f52a022
test: optimize auth and audit test runtime
steipete Feb 23, 2026
e6484cb
refactor: harden kilocode auth ordering and dedupe provider wiring
steipete Feb 23, 2026
a2dfe98
fix(security): harden regex compilation for filters and redaction
steipete Feb 23, 2026
7b4d2cb
docs(security): clarify trusted-config dos scope
steipete Feb 23, 2026
3b8e330
fix(security): harden safeBins long-option validation
steipete Feb 23, 2026
25f6fcc
docs(changelog): note safeBins exec hardening
steipete Feb 23, 2026
d68380b
docs(security): clarify exposed-secret report scope
steipete Feb 24, 2026
8dfa33d
test(sandbox): add root bind mount regression
steipete Feb 24, 2026
f0c3c8b
fix(config): redact dynamic catchall secret keys
steipete Feb 24, 2026
7d55277
docs: clarify operator trust boundary for shared gateways
steipete Feb 24, 2026
f58c1ef
test(gateway): speed up contract and polling suites
steipete Feb 24, 2026
663f784
test(core): trim redundant setup and tighten waits
steipete Feb 24, 2026
a430e17
test(channels): reduce media test runtime and polling
steipete Feb 24, 2026
4002202
docs: clarify multi-instance recommendations for user isolation
steipete Feb 24, 2026
83eae14
docs: add security-advisory triage reminder to agents guide
steipete Feb 24, 2026
30c6225
Providers: disable developer role for DashScope-compatible endpoints …
vincentkoc Feb 24, 2026
13478cc
refactor(config): harden catchall hint mapping and array fallback
steipete Feb 24, 2026
0cc3275
test(gateway): speed up slow e2e test setup
steipete Feb 24, 2026
41b0568
docs(security): clarify shared-agent trust boundaries
steipete Feb 24, 2026
cfa44ea
fix(security): make allowFrom id-only by default with dangerous name …
steipete Feb 24, 2026
ddf93d9
docs(security): add vps trust-boundary guidance
steipete Feb 24, 2026
12cc754
fix(acp): harden permission auto-approval policy
steipete Feb 24, 2026
f97c092
fix(security): harden account-key handling against prototype pollution
steipete Feb 24, 2026
63dcd28
fix(acp): harden permission tool-name validation
steipete Feb 24, 2026
6c43d0a
test(gateway): move sessions_send error paths to unit tests
steipete Feb 24, 2026
e593155
test: tighten slow test timeouts and cleanup
steipete Feb 24, 2026
2246790
fix(doctor): inherit dangerous name-matching flag in mutable allowlis…
steipete Feb 24, 2026
2e36bdd
docs(changelog): credit ACP security reporter
steipete Feb 24, 2026
6a7c303
test(msteams): fix allowlist name-match expectations
steipete Feb 24, 2026
161d984
refactor(security): unify dangerous name matching handling
steipete Feb 24, 2026
1f81677
docs(changelog): note dangerous name-matching audit unification
steipete Feb 24, 2026
f0f886e
docs(security): clarify gateway-node trust boundary in docs
steipete Feb 24, 2026
467666a
test(sandbox): use focused modules in lightweight suites
steipete Feb 24, 2026
8779b52
test(sandbox): speed up agent-config coverage with pure resolvers
steipete Feb 24, 2026
5eb72ab
fix(security): harden browser SSRF defaults and migrate legacy key
steipete Feb 24, 2026
a1c4bf0
fix(security): harden exec wrapper allowlist execution parity
steipete Feb 24, 2026
edfefdf
docs(changelog): mark ACP hardening as next npm release
steipete Feb 24, 2026
223d7dc
feat(gateway)!: require explicit non-loopback control-ui origins
steipete Feb 24, 2026
08e2aa4
fix(commands): restrict commands.allowFrom to sender principals
steipete Feb 24, 2026
6c441ea
fix: support legacy and beta prerelease version formats
steipete Feb 24, 2026
5239b55
Config: expand Kilo catalog and persist selected Kilo models (#24921)
gumadeiras Feb 24, 2026
0026255
refactor(security): harden system.run wrapper enforcement
steipete Feb 24, 2026
dd9d9c1
fix(security): enforce workspaceOnly for sandbox image tool
steipete Feb 24, 2026
c070be1
fix(sandbox): harden fs bridge path checks and bind mount policy
steipete Feb 24, 2026
6634030
fix: enforce apply_patch workspaceOnly in sandbox mounts
steipete Feb 24, 2026
3f923e8
test: add env -S allowlist bypass regressions
steipete Feb 24, 2026
4032390
docs(security): clarify trusted user-triggered local actions
steipete Feb 24, 2026
207ec7c
chore(provider): remove unused pruning functions
gumadeiras Feb 24, 2026
ce02ad9
refactor(agents): centralize sandbox media and fs policy helpers
steipete Feb 24, 2026
4663d68
Tests: make model-catalog fixtures type-valid
gumadeiras Feb 24, 2026
1d28da5
fix(voice-call): block Twilio webhook replay and stale transitions
steipete Feb 24, 2026
f6afc8c
docs(security): clarify host-side exec trust model defaults
steipete Feb 24, 2026
f8524ec
fix(security): harden exported session html rendering
steipete Feb 24, 2026
ff4e6ca
fix(ios): gate agent deep links with local confirmation
steipete Feb 24, 2026
fefc414
fix(security): harden structural session path fallback
steipete Feb 24, 2026
e578521
fix(security): harden session export image data-url handling
steipete Feb 24, 2026
90383e0
fix(security): harden autoAllowSkills exec matching
steipete Feb 24, 2026
ef1ffac
scripts: exclude unresolved clawtributors from README
shakkernerd Feb 24, 2026
71f4b93
docs: refresh clawtributors list
shakkernerd Feb 24, 2026
ff10fe8
fix(security): require /etc/shells for shell env fallback
steipete Feb 24, 2026
d0ef4c7
docs(changelog): credit safeBins advisory reporters
steipete Feb 24, 2026
60f1d19
test: stabilize invoke-system-run env-wrapper assertion on Windows
steipete Feb 24, 2026
c5ac90a
docs(changelog): add shell-env fallback hardening note
steipete Feb 24, 2026
9530c01
refactor(exec): split safe-bin policy modules and dedupe allowlist flow
steipete Feb 24, 2026
4a3f843
fix(gateway): bind node exec approvals to nodeId
steipete Feb 24, 2026
a67689a
fix: harden allow-always shell multiplexer wrapper handling
steipete Feb 24, 2026
64aab80
test(exec): add regressions for safe-bin metadata and chain semantics
steipete Feb 24, 2026
204d9fb
refactor(security): dedupe shell env probe and add path regression test
steipete Feb 24, 2026
ffd63b7
fix(security): trust resolved skill-bin paths in allowlist auto-allow
steipete Feb 24, 2026
c6c1e3e
docs(changelog): correct exec approvals reporter credit
steipete Feb 24, 2026
6f0dd61
fix(exec): restore two-phase approval registration flow
steipete Feb 24, 2026
7b2b86c
fix(exec): add approval race changelog and regressions
steipete Feb 24, 2026
177f167
fix: guard .trim() calls on potentially undefined workspaceDir (#24875)
omair445 Feb 24, 2026
19c43ea
fix(memory): strip null bytes from workspace paths causing ENOTDIR (#…
omair445 Feb 24, 2026
e2e10b3
fix(slack): map threadId to replyToId for restart sentinel notificati…
Taskle Feb 24, 2026
588ad7f
fix: respect agent model config in slug generator (#24776)
bigwest60 Feb 24, 2026
70cfb69
fix(doctor): skip false positive permission warnings for Nix store sy…
soumikbhatta Feb 24, 2026
dc8423f
fix: back up existing systemd unit before overwriting on update (#243…
echoVic Feb 24, 2026
d07d24e
fix: clamp poll sleep duration to non-negative in bash-tools process …
avacadobanana352 Feb 24, 2026
237b9be
chore(docs) : remove the mention of Anthropic OAuth since it is not …
ali-aljufairi Feb 24, 2026
9df80b7
fix: allow RFC2544 benchmark range (198.18.0.0/15) through SSRF filter
Feb 24, 2026
3af9d1f
fix: scope Telegram RFC2544 SSRF exception to policy opt-in (#24982) …
steipete Feb 24, 2026
ae281a6
fix: suppress "Run doctor --fix" hint when already in fix mode with n…
stakeswky Feb 24, 2026
1e23d2e
fix(whatsapp): respect selfChatMode config in access-control (#24738)
Glucksberg Feb 24, 2026
a3b82a5
fix: resolve symlinks in pnpm/bun global install detection (#24744)
Glucksberg Feb 24, 2026
04bcabc
fix(infra): handle Windows dev=0 in sameFileIdentity TOCTOU check (#2…
junjunjunbong Feb 24, 2026
52ac763
fix: persist reasoningLevel 'off' instead of deleting it (#24406) (#2…
echoVic Feb 24, 2026
e3da57d
fix: add exponential backoff to announce queue drain on failure (#24783)
banna-commits Feb 24, 2026
c1fe688
fix(gateway): safely extract text from content arrays in prompt build…
Sid-Qin Feb 24, 2026
38da3f4
fix(discord): suppress reasoning/thinking block payloads from deliver…
Sid-Qin Feb 24, 2026
9ced640
fix(auth): classify missing OAuth scopes as auth failures (#24761)
chilu18 Feb 24, 2026
f5cab29
fix(synology-chat): deregister stale webhook route before re-register…
Sid-Qin Feb 24, 2026
bf91b34
fix(plugins): use manifest id as config entry key instead of npm pack…
zerone0x Feb 24, 2026
d95ee85
fix(cron): use full prompt mode for isolated cron sessions to include…
Sid-Qin Feb 24, 2026
0bdcca2
test(whatsapp): add log redaction coverage
steipete Feb 24, 2026
aef45b2
fix(logging): redact phone numbers and message content from WhatsApp …
coygeek Feb 24, 2026
3a65308
fix(config): align whatsapp enabled schema with auto-enable
steipete Feb 24, 2026
3d22af6
fix(whatsapp): suppress reasoning/thinking content from WhatsApp deli…
Sid-Qin Feb 24, 2026
b5881d9
fix: avoid WhatsApp silent turns with final-only delivery (#24962) (t…
steipete Feb 24, 2026
1565d7e
fix: increase verification max_tokens to 1024 for Poe API compatibility
Glucksberg Feb 23, 2026
9cc7450
docs(changelog): add missing unreleased fixes and reorder
steipete Feb 24, 2026
947883d
fix: suppress sessions_send error warnings from leaking to chat (#23989)
Glucksberg Feb 23, 2026
dd145f1
fix: suppress sessions_send warning leakage coverage (#24740) (thanks…
steipete Feb 24, 2026
9f4764c
fix(plugins): guard legacy zod schemas without toJSONSchema
pandego Feb 24, 2026
7a42558
fix: harden legacy plugin schema compatibility tests (#24933) (thanks…
steipete Feb 24, 2026
053b0df
fix(ui): load saved locale on startup
chilu18 Feb 23, 2026
fd24b35
fix: cover startup locale hydration path (#24795) (thanks @chilu18)
steipete Feb 24, 2026
d883eca
fix(discord): fallback thread parent lookup when parentId missing
Feb 24, 2026
a216f2d
fix: extend discord thread parent fallback coverage (#24897) (thanks …
steipete Feb 24, 2026
6c1ed94
fix: harden queue retry debounce and add regression tests
steipete Feb 24, 2026
b902d5a
fix(status): show pairing approval recovery hints
markmusson Feb 23, 2026
69a541c
fix: sanitize pairing recovery requestId hints (#24771) (thanks @mark…
steipete Feb 24, 2026
3e974dc
fix: don't inject reasoning: { effort: "none" } for OpenRouter when t…
DevSecTim Feb 23, 2026
b96d32c
chore: fix oxfmt formatting in extraparams test
DevSecTim Feb 23, 2026
de0e012
fix: expand openrouter thinking-off regression coverage (#24863) (tha…
steipete Feb 24, 2026
6f44d92
docs: update PR_STATUS.md - all 11 PRs CI passed
Feb 23, 2026
5778368
fix(whatsapp): guard updateLastRoute when dmScope isolates DM sessions
Feb 24, 2026
ebde897
fix: add dmScope route guard regression tests (#24949) (thanks @kevin…
steipete Feb 24, 2026
a388fbb
fix: harden custom-provider verification probes (#24743) (thanks @Glu…
steipete Feb 24, 2026
d76742f
fix: normalize manifest plugin ids during install
steipete Feb 24, 2026
588a188
fix: replace stale plugin webhook routes on re-registration
steipete Feb 24, 2026
aea28e2
fix(auto-reply): expand standalone stop phrases
steipete Feb 24, 2026
9d3bd50
fix(otel): use protobuf OTLP exporters instead of JSON/HTTP
Sid-Qin Feb 24, 2026
8d20356
fix(agents): include SOUL.md, IDENTITY.md, USER.md in subagent/cron b…
Feb 24, 2026
3129d1c
fix(gateway): start browser HTTP control server module
ieaves Feb 22, 2026
113545f
docs(changelog): note browser control startup import fix (#23974) (th…
steipete Feb 24, 2026
dd41a78
fix(bluebubbles): pass SSRF policy for localhost attachment downloads…
mcaxtr Feb 23, 2026
721d8b2
test(discord): stabilize parent-info + doctor migration assertions (#…
steipete Feb 24, 2026
67bac62
fix: Chrome relay extension auto-reattach after SPA navigation
Feb 18, 2026
7c028e8
fix: respect canceled_by_user and replaced_with_devtools detach reasons
Feb 18, 2026
004a610
docs(changelog): note relay nav auto-reattach fix (#19766) (thanks @n…
steipete Feb 24, 2026
3eabd53
Tests: add regressions for subagent completion fallback and explicit …
sahilsatralkar Feb 23, 2026
28d658e
Tests: verify tools invoke propagates route headers for subagent spaw…
sahilsatralkar Feb 23, 2026
f9ffd41
Subagents: fallback completion announce to internal session when outb…
sahilsatralkar Feb 23, 2026
8796c78
Gateway: propagate message target and thread headers into tools invok…
sahilsatralkar Feb 23, 2026
420d8c6
Tests/Typing: stabilize subagent completion routing changes
sahilsatralkar Feb 23, 2026
b2719d0
fix(subagents): restore isInternalMessageChannel guard in resolveAnno…
Feb 22, 2026
1fdaaae
Docs: clarify Chrome extension relay port derivation (gateway + 3)
krizpoon Feb 20, 2026
0a53a77
Chrome extension: validate relay endpoint response format
krizpoon Feb 20, 2026
b7949d3
Chrome extension: simplify validation logic
krizpoon Feb 20, 2026
1237516
fix(chrome-extension): finalize relay endpoint validation flow (#2225…
steipete Feb 24, 2026
f6b4baa
test(telegram): align stop-phrase sequential key expectation (#25034)
steipete Feb 24, 2026
87dd896
fix: sessions_sspawn model override ignored for sub-agents
Slats24 Feb 19, 2026
cd3927a
fix(sessions): preserve allow-any subagent model overrides (#21088) (…
steipete Feb 24, 2026
c3b3065
fix(subagents): reconcile orphaned restored runs
HeMuling Feb 23, 2026
d0e008d
chore(status): clarify bootstrap file semantics
HeMuling Feb 23, 2026
3c13f4c
test(subagents): mock sessions store in steer-restart coverage
HeMuling Feb 23, 2026
ffc2277
fix(subagents): prune orphaned restored runs + status wording (#24244…
steipete Feb 24, 2026
3f5e7f8
fix(gateway): consume allow-once approvals to prevent replay
Feb 23, 2026
c6bb7b0
fix(whatsapp): groupAllowFrom sender filter bypassed when groupPolicy…
lailoo Feb 23, 2026
f3459d7
fix(exec): treat shell exit codes 126/127 as failures instead of comp…
Sid-Qin Feb 24, 2026
c69fc38
fix(config): surface helpful chown hint on EACCES when reading config
zerone0x Feb 24, 2026
2398b51
fix: include available_skills in isolated cron agentTurn sessions (cl…
Feb 24, 2026
c7bf0da
chore: remove unused isMinimal param from buildSkillsSection
Feb 24, 2026
01c1f68
fix(hooks): decouple message:sent internal hook from mirror param
mcaxtr Feb 24, 2026
ac6cec7
fix(providers): strip trailing /v1 from Anthropic baseUrl to prevent …
zerone0x Feb 23, 2026
dd14daa
fix(telegram): allowlist api.telegram.org in media SSRF policy
steipete Feb 24, 2026
803e02d
fix: adapt landed fixups to current type and approval constraints
steipete Feb 24, 2026
5710d72
feat(agents): configurable default runTimeoutSeconds for subagent spawns
mitchmcalister Feb 23, 2026
8bcd405
fix: add .int() to runTimeoutSeconds zod schema for consistency
mitchmcalister Feb 23, 2026
8c5cf2d
docs(subagents): document default runTimeoutSeconds config (#24594) (…
steipete Feb 24, 2026
f9de171
refactor(browser): share relay token + options validation tests
steipete Feb 24, 2026
d51a469
Deny cron tool on /tools/invoke by default
Feb 24, 2026
24e52f5
fix(cli): resolve --url option collision in browser cookies set
hclsys Feb 24, 2026
fd7ca4c
fix: normalize input peer.kind in resolveAgentRoute (#22730)
Glucksberg Feb 23, 2026
3823587
fix(agents): allow empty edit replacement text
github-actions[bot] Feb 23, 2026
792bd61
fix: recognize Bedrock as Anthropic-compatible in transcript policy
JackyWay Feb 23, 2026
58ce0a8
fix(cli): load plugin registry for configure and onboard commands (#1…
mcaxtr Feb 23, 2026
75969ed
fix(plugins): pass session context to before_compaction hook in subsc…
mgratch Feb 23, 2026
8c8374d
fix(cron): treat embedded error payloads as run failures
chilu18 Feb 23, 2026
424ba72
fix(config): add actionable guidance for dmPolicy open allowFrom mism…
chilu18 Feb 23, 2026
252079f
fix(agents): repair orphaned tool results for OpenAI after history tr…
easternbloc Feb 23, 2026
eae13d9
test(agents): update test to match universal tool-result repair for O…
easternbloc Feb 23, 2026
bc52d4a
fix(openrouter): skip reasoning effort injection for 'auto' routing m…
zerone0x Feb 24, 2026
83689fc
fix: include trusted-proxy in sharedAuthOk check
marcodd23 Feb 23, 2026
a7518b7
fix(feishu): pass parentPeer for topic session binding inheritance
Feb 23, 2026
b9e587f
fix(tui): guard sendMessage when disconnected; reset readyPromise on …
claude Feb 24, 2026
7d76c24
fix: suppress reasoning payloads from generic channel dispatch path
Feb 24, 2026
d427d09
fix: align reasoning payload typing for #24991 (thanks @stakeswky)
steipete Feb 24, 2026
19d0ddc
fix: regenerate protocol swift models for nodeId (#24991) (thanks @st…
steipete Feb 24, 2026
2880fb3
fix: sync lockfile for diagnostics-otel deps (#24991) (thanks @stakes…
steipete Feb 24, 2026
cb450fd
fix: align lockfile with diagnostics-otel proto deps (#24991) (thanks…
steipete Feb 24, 2026
d3ecc23
test: align flaky CI expectations after main changes (#24991) (thanks…
steipete Feb 24, 2026
5ac70b3
test: make shell-env trust-path test platform-safe (#24991) (thanks @…
steipete Feb 24, 2026
1298bd4
fix(matrix): skip reasoning-only messages in reply delivery
justinhuangcode Feb 23, 2026
0ded77c
test(matrix): add regression tests for reasoning-only reply filtering
justinhuangcode Feb 23, 2026
e8a4d5d
fix(discord): strip reasoning tags from partial stream preview
justinhuangcode Feb 23, 2026
6ea1607
test(discord): add regression tests for reasoning tag stripping in st…
justinhuangcode Feb 23, 2026
2d6d679
test: fix post-merge config and tui command-handler tests
steipete Feb 24, 2026
31f2bf9
test: fix gate regressions
steipete Feb 24, 2026
ee42381
chore: add mailmap mappings for cherry-picked contributors
steipete Feb 24, 2026
10cd4b5
chore: credit PR #24705 contributor attribution
afern247 Feb 24, 2026
91ea6ad
docs(changelog): reorder unreleased fixes by user impact
steipete Feb 24, 2026
fd10286
docs(changelog): mark allowFrom id-only default as breaking
steipete Feb 24, 2026
936f244
chore(release): prep 2026.2.23-beta.1 changelog
steipete Feb 24, 2026
cafa822
docs(changelog): move stop-signal expansion to changes
steipete Feb 24, 2026
8ea936c
docs: clarify prompt caching intro
steipete Feb 24, 2026
b817600
chore(release): cut 2026.2.23
steipete Feb 24, 2026
fc923e3
Merge tag 'refs/tags/v2026.2.23' into sync/upstream-release-v2026.2.23
RedBeardEth Feb 24, 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
  •  
  •  
  •  
59 changes: 57 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,32 @@ jobs:
- name: Check docs
run: pnpm check:docs

skills-python:
needs: [docs-scope, changed-scope]
if: needs.docs-scope.outputs.docs_only != 'true' && (github.event_name == 'push' || needs.changed-scope.outputs.run_node == 'true')
runs-on: blacksmith-16vcpu-ubuntu-2404
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: false

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install Python tooling
run: |
python -m pip install --upgrade pip
python -m pip install pytest ruff pyyaml

- name: Lint Python skill scripts
run: python -m ruff check skills

- name: Test skill Python scripts
run: python -m pytest -q skills

secrets:
runs-on: blacksmith-16vcpu-ubuntu-2404
steps:
Expand All @@ -325,15 +351,20 @@ jobs:
with:
submodules: false

- name: Setup Node environment
uses: ./.github/actions/setup-node-env
with:
install-bun: "false"

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install detect-secrets
- name: Install pre-commit
run: |
python -m pip install --upgrade pip
python -m pip install detect-secrets==1.5.0
python -m pip install pre-commit detect-secrets==1.5.0

- name: Detect secrets
run: |
Expand All @@ -342,6 +373,30 @@ jobs:
exit 1
fi

- name: Detect committed private keys
run: pre-commit run --all-files detect-private-key

- name: Audit changed GitHub workflows with zizmor
run: |
set -euo pipefail

if [ "${{ github.event_name }}" = "push" ]; then
BASE="${{ github.event.before }}"
else
BASE="${{ github.event.pull_request.base.sha }}"
fi

mapfile -t workflow_files < <(git diff --name-only "$BASE" HEAD -- '.github/workflows/*.yml' '.github/workflows/*.yaml')
if [ "${#workflow_files[@]}" -eq 0 ]; then
echo "No workflow changes detected; skipping zizmor."
exit 0
fi

pre-commit run zizmor --files "${workflow_files[@]}"

- name: Audit production dependencies
run: pre-commit run --all-files pnpm-audit-prod

checks-windows:
needs: [docs-scope, changed-scope, build-artifacts, check]
if: needs.docs-scope.outputs.docs_only != 'true' && (github.event_name == 'push' || needs.changed-scope.outputs.run_node == 'true')
Expand Down
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,19 @@ package-lock.json
.agents/*
!.agents/maintainers.md
.agent/
skills-lock.json

# Local iOS signing overrides
apps/ios/LocalSigning.xcconfig
# Generated protocol schema (produced via pnpm protocol:gen)
dist/protocol.schema.json
.ant-colony/

# Eclipse
**/.project
**/.classpath
**/.settings/
**/.gradle/

# Synthing
**/.stfolder/
13 changes: 13 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Canonical contributor identity mappings for cherry-picked commits.
bmendonca3 <208517100+bmendonca3@users.noreply.github.com> <brianmendonca@Brians-MacBook-Air.local>
hcl <7755017+hclsys@users.noreply.github.com> <chenglunhu@gmail.com>
Glucksberg <80581902+Glucksberg@users.noreply.github.com> <markuscontasul@gmail.com>
JackyWay <53031570+JackyWay@users.noreply.github.com> <jackybbc@gmail.com>
Marcus Castro <7562095+mcaxtr@users.noreply.github.com> <mcaxtr@gmail.com>
Marc Gratch <2238658+mgratch@users.noreply.github.com> <me@marcgratch.com>
Peter Machona <7957943+chilu18@users.noreply.github.com> <chilu.machona@icloud.com>
Ben Marvell <92585+easternbloc@users.noreply.github.com> <ben@marvell.consulting>
zerone0x <39543393+zerone0x@users.noreply.github.com> <hi@trine.dev>
Marco Di Dionisio <3519682+marcodd23@users.noreply.github.com> <m.didionisio23@gmail.com>
mujiannan <46643837+mujiannan@users.noreply.github.com> <shennan@mujiannan.com>
Santhanakrishnan <239082898+bitfoundry-ai@users.noreply.github.com> <noreply@anthropic.com>
28 changes: 27 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ repos:
- id: check-added-large-files
args: [--maxkb=500]
- id: check-merge-conflict
- id: detect-private-key
exclude: '(^|/)(\.secrets\.baseline$|\.detect-secrets\.cfg$|\.pre-commit-config\.yaml$|apps/ios/fastlane/Fastfile$|.*\.test\.ts$)'

# Secret detection (same as CI)
- repo: https://github.com/Yelp/detect-secrets
Expand Down Expand Up @@ -45,7 +47,6 @@ repos:
- '=== "string"'
- --exclude-lines
- 'typeof remote\?\.password === "string"'

# Shell script linting
- repo: https://github.com/koalaman/shellcheck-precommit
rev: v0.11.0
Expand All @@ -69,9 +70,34 @@ repos:
args: [--persona=regular, --min-severity=medium, --min-confidence=medium]
exclude: "^(vendor/|Swabble/)"

# Python checks for skills scripts
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.1
hooks:
- id: ruff
files: "^skills/.*\\.py$"
args: [--config, pyproject.toml]

- repo: local
hooks:
- id: skills-python-tests
name: skills python tests
entry: pytest -q skills
language: python
additional_dependencies: [pytest>=8, <9]
pass_filenames: false
files: "^skills/.*\\.py$"

# Project checks (same commands as CI)
- repo: local
hooks:
# pnpm audit --prod --audit-level=high
- id: pnpm-audit-prod
name: pnpm-audit-prod
entry: pnpm audit --prod --audit-level=high
language: system
pass_filenames: false

# oxlint --type-aware src test
- id: oxlint
name: oxlint
Expand Down
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

- Repo: https://github.com/openclaw/openclaw
- GitHub issues/comments/PR comments: use literal multiline strings or `-F - <<'EOF'` (or $'...') for real newlines; never embed "\\n".
- GitHub comment footgun: never use `gh issue/pr comment -b "..."` when body contains backticks or shell chars. Always use single-quoted heredoc (`-F - <<'EOF'`) so no command substitution/escaping corruption.
- GitHub linking footgun: don’t wrap issue/PR refs like `#24643` in backticks when you want auto-linking. Use plain `#24643` (optionally add full URL).
- Security advisory analysis: before triage/severity decisions, read `SECURITY.md` to align with OpenClaw's trust model and design boundaries.

## Project Structure & Module Organization

Expand Down Expand Up @@ -83,6 +86,7 @@

- stable: tagged releases only (e.g. `vYYYY.M.D`), npm dist-tag `latest`.
- beta: prerelease tags `vYYYY.M.D-beta.N`, npm dist-tag `beta` (may ship without macOS app).
- beta naming: prefer `-beta.N`; do not mint new `-1/-2` betas. Legacy `vYYYY.M.D-<patch>` and `vYYYY.M.D.beta.N` remain recognized.
- dev: moving head on `main` (no tag; git checkout main).

## Testing Guidelines
Expand All @@ -91,6 +95,7 @@
- Naming: match source names with `*.test.ts`; e2e in `*.e2e.test.ts`.
- Run `pnpm test` (or `pnpm test:coverage`) before pushing when you touch logic.
- Do not set test workers above 16; tried already.
- If local Vitest runs cause memory pressure (common on non-Mac-Studio hosts), use `OPENCLAW_TEST_PROFILE=low OPENCLAW_TEST_SERIAL_GATEWAY=1 pnpm test` for land/gate runs.
- Live tests (real keys): `CLAWDBOT_LIVE_TEST=1 pnpm test:live` (OpenClaw-only) or `LIVE=1 pnpm test:live` (includes provider live tests). Docker: `pnpm test:docker:live-models`, `pnpm test:docker:live-gateway`. Onboarding Docker E2E: `pnpm test:docker:onboard`.
- Full kit + what’s covered: `docs/testing.md`.
- Changelog: user-facing changes only; no internal/meta notes (version alignment, appcast reminders, release process).
Expand Down
Loading
Loading