Peter Steinberger
65e13c7b6e
fix(fs): honor unset tools.fs.workspaceOnly default (land #31128 by @SaucePackets)
...
Landed-from: #31128
Contributor: @SaucePackets
Co-authored-by: SaucePackets <33006469+SaucePackets@users.noreply.github.com >
2026-03-02 01:43:50 +00:00
Mark L
f1354869bd
Node install: persist gateway token in service env ( #31122 )
...
* Node daemon: persist gateway token env
* changelog: add credits for node gateway token fix
* changelog: credit byungsker for node token service fix
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-01 17:35:24 -08:00
StingNing
ca770622b3
Cron: fix 1/3 timeout on fresh isolated CLI runs (openclaw#30140) thanks @ningding97
...
Verified:
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: ningding97 <17723822+ningding97@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-01 19:34:18 -06:00
Peter Steinberger
949200d7cb
test(browser): fix windows download tmp path assertions
2026-03-02 01:32:28 +00:00
Peter Steinberger
68a8a98ab7
fix(acpx): default strict windows wrapper policy on windows
2026-03-02 01:31:32 +00:00
Beer van der Drift
feefedfb83
fix: allow docker cli container to connect to gateway ( #12504 )
...
* Docker: route CLI through gateway network namespace
* Tests: assert Docker Compose CLI namespace wiring
* Changelog: add Docker Compose CLI connectivity fix
* Docker: pin docker setup gateway mode and bind
* Tests: cover docker setup mode and bind sync
* Docs: clarify Docker LAN vs loopback gateway targeting
* Changelog: expand Docker #12504 targeting note
* Docker: default optional CLAUDE compose vars to empty
* Docs(Docker): document non-interactive compose runs
* Changelog: note docker compose env-noise reduction
* Docker: restore onboarding Tailscale guidance
* Docker: simplify onboarding output and clarify Tailscale
* Docker: harden shared-namespace CLI container
* Docs(Docker): document shared-namespace trust boundary
* Changelog: note docker shared-namespace hardening
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-01 17:28:35 -08:00
Peter Steinberger
710004e011
fix(security): harden root-scoped writes against symlink races
2026-03-02 01:27:46 +00:00
Peter Steinberger
bfeadb80b6
feat(agents): add sessions_spawn sandbox require mode
2026-03-02 01:27:34 +00:00
Peter Steinberger
a6a742f3d0
fix(auto-reply): land #31080 from @scoootscooob
...
Co-authored-by: scoootscooob <zhentongfan@gmail.com >
2026-03-02 01:17:42 +00:00
Peter Steinberger
e7cd4bf1bd
refactor(web): split trusted and strict web tool fetch paths
2026-03-02 01:14:06 +00:00
Vincent Koc
e07c51b045
CLI: avoid plugin preload for health --json route ( #31108 )
...
* CLI routes: skip plugin preload for health --json
* CLI routes tests: cover health --json plugin preload
2026-03-01 17:13:58 -08:00
Peter Steinberger
155118751f
refactor!: remove versioned system-run approval contract
2026-03-02 01:12:53 +00:00
Frank Yang
1636f7ff5f
fix(gateway): support wildcard in controlUi.allowedOrigins for remote access ( #31088 )
...
* fix(gateway): support wildcard in controlUi.allowedOrigins for remote access
* build: regenerate host env security policy swift
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-02 01:11:24 +00:00
Shawn
654f63e8f8
fix(signal): prevent sentTranscript sync messages from bypassing loop protection ( #31093 )
...
* fix(signal): prevent sentTranscript sync messages from bypassing loop protection
Issue: #31084
On daemon restart, sentTranscript sync messages could bypass loop protection
because the syncMessage check happened before the sender validation. This
reorganizes the checks to:
1. First resolve the sender (phone or UUID)
2. Check if the message is from our own account (both phone and UUID)
3. Only skip sync messages from other sources after confirming not own account
This ensures that sync messages from the own account are properly filtered
to prevent self-reply loops, while still allowing messages synced from other
devices to be processed.
Added optional accountUuid config field for UUID-based account identification.
* fix(signal): cover UUID-only own-message loop protection
* build: regenerate host env security policy swift
---------
Co-authored-by: Kevin Wang <kevin@example.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-02 01:11:22 +00:00
Peter Steinberger
b9aa2d436b
fix(security): enforce sandbox inheritance for sessions_spawn
2026-03-02 01:11:13 +00:00
不做了睡大觉
6a1eedf10b
fix: deliver subagent completion announces to Slack without invalid thread_ts ( #31105 )
...
* fix(subagent): avoid invalid Slack thread_ts for bound completion announces
* build: regenerate host env security policy swift
---------
Co-authored-by: User <user@example.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-02 01:11:08 +00:00
Frank Yang
ed86252aa5
fix: handle CLI session expired errors gracefully instead of crashing gateway ( #31090 )
...
* fix: handle CLI session expired errors gracefully
- Add session_expired to FailoverReason type
- Add isCliSessionExpiredErrorMessage to detect expired CLI sessions
- Modify runCliAgent to retry with new session when session expires
- Update agentCommand to clear expired session IDs from session store
- Add proper error handling to prevent gateway crashes on expired sessions
Fixes #30986
* fix: add session_expired to AuthProfileFailureReason and missing log import
* fix: type cli-runner usage field to match EmbeddedPiAgentMeta
* fix: harden CLI session-expiry recovery handling
* build: regenerate host env security policy swift
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-02 01:11:05 +00:00
Peter Steinberger
a95c8077e8
test(discord): type gateway stop mock params
2026-03-02 01:10:03 +00:00
Peter Steinberger
81ca309ee6
fix(agents): land #31002 from @yfge
...
Co-authored-by: yfge <geyunfei@gmail.com >
2026-03-02 01:08:58 +00:00
Peter Steinberger
250f9e15f5
fix(agents): land #31007 from @HOYALIM
...
Co-authored-by: Ho Lim <subhoya@gmail.com >
2026-03-02 01:06:00 +00:00
Peter Steinberger
085c23ce5a
fix(security): block private-network web_search citation redirects
2026-03-02 01:05:20 +00:00
Peter Steinberger
c823a85302
fix: harden sandbox media reads against TOCTOU escapes
2026-03-02 01:04:01 +00:00
Peter Steinberger
da80e22d89
fix(tools): land #31015 from @haosenwang1018
...
Co-authored-by: haosenwang1018 <1293965075@qq.com >
2026-03-02 01:01:02 +00:00
Peter Steinberger
c80f34f0e0
test(discord): type gateway stop mock params
2026-03-02 00:49:27 +00:00
Shakker
4274374297
Tests: type Discord gateway lifecycle wait mock
2026-03-02 00:44:34 +00:00
Peter Steinberger
cef5fae0a2
refactor(gateway): dedupe origin seeding and plugin route auth matching
2026-03-02 00:42:22 +00:00
Benedikt Johannes
b81e1b902d
Fixes minor security vulnerability ( #30948 ) ( #30951 )
...
Merged via squash.
Prepared head SHA: cfbe5fe8301370d751b3c62d908533f00d583933
Co-authored-by: benediktjohannes <253604130+benediktjohannes@users.noreply.github.com >
Co-authored-by: shakkernerd <165377636+shakkernerd@users.noreply.github.com >
Reviewed-by: @shakkernerd
2026-03-02 00:38:01 +00:00
Vincent Koc
f696b64b51
Doctor: warn when Linux state dir is on SD/eMMC mounts ( #31033 )
...
* Doctor state: warn on Linux SD or eMMC state mounts
* Doctor tests: cover Linux SD or eMMC state mount detection
* Docs doctor: document Linux SD or eMMC state warning
* Changelog: add Linux SD or eMMC doctor warning
* Update CHANGELOG.md
* Doctor: escape mountinfo control chars in SD warning
* Doctor tests: cover escaped mountinfo control chars
2026-03-01 16:36:01 -08:00
Peter Steinberger
412eabc42b
fix(session): retire stale dm main route after dmScope migration ( #31010 )
2026-03-02 00:33:54 +00:00
Peter Steinberger
68832f203e
refactor(diagnostics): hot-reload stuck warning threshold
2026-03-02 00:32:33 +00:00
Peter Steinberger
fbd832d64f
refactor(config): share byte-size parsing for memory flush
2026-03-02 00:32:33 +00:00
Peter Steinberger
9e727893ff
refactor(session): consolidate transcript snapshot reads
2026-03-02 00:32:33 +00:00
Peter Steinberger
3a68c56264
refactor(security): unify webhook guardrails across channels
2026-03-02 00:31:42 +00:00
Peter Steinberger
58659b931b
fix(gateway): enforce owner boundary for agent runs
2026-03-02 00:27:44 +00:00
Peter Steinberger
9005e8bc0a
refactor(gateway): unify metadata canonicalization + platform rules
2026-03-02 00:26:36 +00:00
Peter Steinberger
0c0f556927
fix(discord): unify reconnect watchdog and land #31025/#30530
...
Landed follow-up intent from contributor PR #31025 (@theotarr) and PR #30530 (@liuxiaopai-ai).
Co-authored-by: theotarr <theotarr@users.noreply.github.com >
Co-authored-by: liuxiaopai-ai <liuxiaopai-ai@users.noreply.github.com >
2026-03-02 00:24:15 +00:00
Peter Steinberger
0eac494db7
fix(gateway): harden node metadata policy classification
2026-03-02 00:15:34 +00:00
Peter Steinberger
43cad8268d
fix(security): harden webhook memory guards across channels
2026-03-02 00:12:05 +00:00
Peter Steinberger
53d10f8688
fix(gateway): land access/auth/config migration cluster
...
Land #28960 by @Glucksberg (Tailscale origin auto-allowlist).
Land #29394 by @synchronic1 (allowedOrigins upgrade migration).
Land #29198 by @Mariana-Codebase (plugin HTTP auth guard + route precedence).
Land #30910 by @liuxiaopai-ai (tailscale bind/config.patch guard).
Co-authored-by: Glucksberg <markuscontasul@gmail.com >
Co-authored-by: synchronic1 <synchronic1@users.noreply.github.com >
Co-authored-by: Mariana Sinisterra <mariana.data@outlook.com >
Co-authored-by: liuxiaopai-ai <73659136+liuxiaopai-ai@users.noreply.github.com >
2026-03-02 00:10:51 +00:00
Peter Steinberger
41cc46bbb4
feat(diagnostics): add configurable stuck-session warning threshold
2026-03-02 00:07:29 +00:00
Peter Steinberger
d729ab2150
fix(session): harden usage accounting and memory flush recovery
2026-03-02 00:07:29 +00:00
Peter Steinberger
a62d55b283
test(discord): cover DM command decision flow
2026-03-02 00:00:05 +00:00
Peter Steinberger
75596e9370
refactor(discord): unify DM command auth handling
2026-03-02 00:00:05 +00:00
Peter Steinberger
12c1257023
fix(acpx): share windows wrapper resolver and add strict hardening mode
2026-03-01 23:57:06 +00:00
Peter Steinberger
881ac62005
test(discord): stabilize model picker timeout assertions
2026-03-01 23:53:07 +00:00
Peter Steinberger
ee03ade0d6
fix(agents): harden tool-name normalization and transcript repair
...
Landed from contributor PRs #30620 and #30735 by @Sid-Qin, plus #30881 by @liuxiaopai-ai.
Co-authored-by: SidQin-cyber <sidqin0410@gmail.com >
Co-authored-by: liuxiaopai-ai <73659136+liuxiaopai-ai@users.noreply.github.com >
2026-03-01 23:51:54 +00:00
Peter Steinberger
50e2674dfc
fix(discord): unify dm command auth gating
2026-03-01 23:50:24 +00:00
Peter Steinberger
577becf1ad
fix(plugins): prioritize bundled duplicates in auto-discovery
...
Landed from contributor PR #29710 by @Sid-Qin.
Co-authored-by: SidQin-cyber <sidqin0410@gmail.com >
2026-03-01 23:48:30 +00:00
Peter Steinberger
5056b6438d
fix(discord): harden reconnect recovery and preserve message delivery
...
Landed from contributor PR #29508 by @cgdusek.
Co-authored-by: Charles Dusek <cgdusek@gmail.com >
2026-03-01 23:46:07 +00:00
Peter Steinberger
23f434f98d
fix(skills): constrain plugin skill paths
2026-03-01 23:45:41 +00:00