Commit Graph

52277 Commits

Author SHA1 Message Date
ai-hpc
f5d2db2a60 fix(agents): keep cron media completions run-scoped 2026-05-25 19:04:03 +01:00
tianxiaochannel-oss88
9445960d9d guide workspace-only scratch paths 2026-05-25 19:03:57 +01:00
Peter Steinberger
207a5a2983 fix(cron): report rotated session in final diagnostics 2026-05-25 19:03:50 +01:00
Arnab Saha
48532227d5 fix(cron): gate lifecycle diagnostic events behind isDiagnosticsEnabled
Address clawsweeper P2: cron isolated-agent lifecycle (message.queued,
session.state, message.processed) now mirrors the dispatch path and
respects the diagnostics.enabled master toggle. Added regression test
for the disabled-config path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 19:03:50 +01:00
Arnab Saha
804a31ec5c fix(cron): address review — drop unsupported taskLabel, pair with session.state lifecycle, add regression test + changelog 2026-05-25 19:03:50 +01:00
Arnab Saha
6ccd4e72f0 fix(cron): emit message.queued/processed for isolated-agent turns 2026-05-25 19:03:50 +01:00
haoxingjun
b5ada806dd fix: hydrate current turn image attachments 2026-05-25 19:03:43 +01:00
YUHAO-corn
177ebdc24c fix(gateway): ignore inherited launchd env for respawn 2026-05-25 19:03:37 +01:00
Vincent Koc
b0c8a4d11d fix(test): preserve undici exports in discord proxy tests 2026-05-25 20:02:10 +02:00
Peter Steinberger
bc12e04993 fix: raise default cron concurrency 2026-05-25 18:59:26 +01:00
liaoyl830
6e8d2dbbbc fix(doctor): skip restart prompt when gateway is healthy after recent restart (#86533)
* fix(doctor): skip restart prompt when gateway is healthy after recent restart

`openclaw doctor` unconditionally prompted "Restart gateway service now?"
with default=Yes whenever the gateway was running, even if it had just
restarted via SIGUSR1 after an update. This caused restart loops on macOS
where the prompt raced with launchctl KeepAlive.

Changes:
- Probe gateway health before the restart prompt when a restart handoff
  exists (deep doctor mode). If healthy, skip the prompt entirely.
- Change `initialValue` from `true` to `false` as a safety net so users
  don't accidentally confirm a restart by pressing Enter.
- Update existing test that expected a single `readGatewayRestartHandoffSync`
  call (now called twice: diagnostic display + health-probe check).

Fixes #86518

* fix(doctor): correct GatewayRestartHandoff mock types in tests

Add explicit literal types + satisfies constraint so the mock handoff
objects match the exact GatewayRestartHandoff type expected by the
type-check CI.

* fix(doctor): apply recent-restart skip to normal doctor flow

* test(doctor): align normal-flow handoff expectation

* chore: add doctor restart prompt changelog

---------

Co-authored-by: OpenClaw Contributor <openclaw-contributor@example.com>
Co-authored-by: liaoyl830 <267396060+liaoyl830@users.noreply.github.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-05-25 13:53:28 -04:00
brokemac79
8129dba5d8 fix: emit agent.send lifecycle hooks on rotation (#85875)
* fix: emit agent send lifecycle hooks

* fix(gateway): align agent send session lifecycle hooks

* fix(gateway): emit agent lifecycle before validation exits

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-25 18:51:13 +01:00
Vincent Koc
7cd15d2493 fix(crabbox): bootstrap macos shell js commands 2026-05-25 19:39:28 +02:00
Peter Steinberger
822ee62947 fix: tighten openshell exec preflight 2026-05-25 18:36:55 +01:00
brokemac79
aafed830a5 fix: preflight malformed openshell exec commands 2026-05-25 18:36:55 +01:00
Peter Steinberger
f87aa0ff1b docs: clarify unshipped compat policy 2026-05-25 18:35:25 +01:00
NVIDIAN
8061d66713 fix(update): allow package-manager hardlinks in swaps
Allow package-manager-managed hardlinked package roots during update/install swaps while keeping generic plugin, hook, and dependency-free install moves fail-closed.

Fixes #85559.

Co-authored-by: ai-hpc <mail.speedy.hpc@hotmail.com>
2026-05-25 18:30:49 +01:00
Peter Steinberger
17954a4f33 docs: ban repo-hosted proof artifacts 2026-05-25 18:25:57 +01:00
Josh Avant
c5b987274a fix(discord): restore bare numeric channel sends (#86571)
* fix(discord): restore bare numeric channel sends

* docs: add Discord channel send changelog
2026-05-25 10:24:20 -07:00
Vincent Koc
b83dfcb953 fix(installer): handle alpine apk runtime floors 2026-05-25 19:23:10 +02:00
Sally O'Malley
bd65b4232a fix(security): audit Claude permission overrides under YOLO (#86557)
* fix(agents): warn on Claude permission overrides under YOLO

* fix: narrow Claude audit backend guard

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-25 18:18:51 +01:00
Peter Steinberger
5ae91f01fa fix: speed up Discord voice wake consults 2026-05-25 18:09:16 +01:00
Vincent Koc
3eb06e305e fix(qa): harden restart inflight Windows scenario 2026-05-25 18:49:04 +02:00
Jason (Json)
5cfa577778 Recover Codex context overflow prompt errors (#85542)
* fix: recover codex context overflow prompt errors

* test: align Codex overflow prompt proof

* test: satisfy manifest registry mock contract

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-25 17:44:48 +01:00
Peter Steinberger
d967760b41 docs: update changelog for #70473 2026-05-25 17:35:47 +01:00
FullerStackDev
d5b0174eb1 fix(agents): derive overflow budgets from provider errors 2026-05-25 17:35:47 +01:00
Peter Steinberger
313762282c fix(plugins): only memoize complete metadata snapshots 2026-05-25 17:29:46 +01:00
Peter Steinberger
a11d4e6871 docs: update changelog for media wake fallback (#85489) 2026-05-25 17:23:28 +01:00
Jason (Json)
1b64ccbfff fix: fallback after active media wake failure (#85489)
* fix: fallback after active media wake failure

* docs: clarify generated media fallback docs
2026-05-25 17:23:20 +01:00
Peter Steinberger
159e4406ab perf(plugins): reuse derived metadata snapshots 2026-05-25 17:20:39 +01:00
Jason (Json)
f271f003d4 docs: require maintainer-editable PR branches
Require contributor and agent-created PR branches to stay maintainer-editable, with a GitHub Actions/secrets caveat for fork PRs.

Verification:
- pnpm docs:list
- git diff --check
- Real behavior proof: https://github.com/openclaw/openclaw/actions/runs/26409882732/job/77741796262
- check-docs: https://github.com/openclaw/openclaw/actions/runs/26409857961/job/77741751070

Changelog intentionally skipped per maintainer request.

Co-authored-by: FullerStackDev <263060202+fuller-stack-dev@users.noreply.github.com>
2026-05-25 17:19:40 +01:00
Peter Steinberger
dd375f9fc3 docs: note agent transcript OpenClaw session scan 2026-05-25 16:48:42 +01:00
Peter Steinberger
4012ae4f42 fix: scan OpenClaw sessions in agent transcript finder 2026-05-25 16:48:42 +01:00
Peter Steinberger
fc93af5637 docs: require generic local fixes 2026-05-25 16:45:56 +01:00
Peter Steinberger
a9c91ca81f fix: broaden leading voice wake fuzzing 2026-05-25 16:45:56 +01:00
Gio Della-Libera
657b246e56 test(agents): preserve provider hook mock exports (#86523) 2026-05-25 08:45:37 -07:00
Gio Della-Libera
fbb6340542 Policy: add agent-scoped policy overlays (#85817)
* feat(policy): add agent-scoped policy overlays

* docs(policy): use generic agent-scoped examples

* fix(policy): generalize scoped policy overlays

* fix(policy): clean scoped overlay checks

* fix(policy): evaluate inherited scoped agent posture

* chore(policy): keep agent harness out of scoped policy pr
2026-05-25 08:45:16 -07:00
Sebastien Tardif
abe99230df fix(kilocode): normalize string stop param to array in stream wrapper (#86461)
* fix(kilocode): normalize string stop param to array in stream wrapper

* fix: move kilocode stop normalization into extension

* fix: keep kilocode stream wrapper plugin-local

* fix: normalize kilocode stop after extra body

* fix(qa-lab): preserve WhatsApp RTT source literal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-25 16:40:07 +01:00
Gio Della-Libera
dc17412c3a Doctor: expose shell completion health findings (#85566)
* feat(doctor): expose shell completion health findings

* fix(doctor): keep shell completion lint informational
2026-05-25 08:39:41 -07:00
Sally O'Malley
f0b6f70053 fix(agents): honor effective exec policy for Claude live Bash (#86330)
* fix(agents): answer Claude live control_request can_use_tool via exec policy

Claude CLI emits stream-json control_request frames with subtype
can_use_tool when it wants to use a native tool. The Claude live-session
bridge previously dropped these frames, leaving Claude waiting for a
control_response until the 180/600s no-output timeout fired (see #80819).

Resolve the effective OpenClaw exec policy (per-agent tools.exec -> global
tools.exec -> allowlist/on-miss defaults) once at session-start time and
thread it through fingerprinting and the session record. When a
can_use_tool request arrives:

- Allow native Bash when the resolved policy is security=full, ask=off
  (matching the bypassPermissions semantics OpenClaw already documents).
- Otherwise deny with a message that names the resolved policy and
  points the agent at OpenClaw MCP tools.

Unsupported control_request subtypes get a structured error response
instead of a silent no-op, and stray control_response frames are
silently dropped. Adds spawn-test coverage for both allow and deny paths.

Fixes #80819

* fix(agents): align Claude live control_request policy with backend defaults

Resolve the effective exec policy through the same defaults that
extensions/anthropic/cli-shared.ts:isOpenClawRequestedYolo and
src/agents/exec-defaults.ts:resolveExecDefaults already use (security
?? "full", ask ?? "off") instead of falling back to a hand-rolled
allowlist/on-miss default that disagreed with the rest of the codebase.
Without this, a default-config OpenClaw deployment launches Claude with
--permission-mode bypassPermissions but the bridge would still deny
Bash control_requests, re-creating the #80819 stall for the very
default-config case the issue reports.

Also thread the effective Claude permission mode into the policy
decision. Prefer the operator's explicit --permission-mode in argv,
falling back to what normalizeClaudePermissionArgs would have inserted
for an un-overridden launch. Native Bash is auto-allowed only when the
effective mode is bypassPermissions AND tools.exec resolves to
full/no-ask, so explicit raw-arg overrides like --permission-mode
default or acceptEdits broaden Claude's native prompting and are
honored by routing through deny.

Adds a no-config regression test (default deployment allows Bash, no
stall) and a permission-mode-override test (tools.exec full/off plus
explicit --permission-mode default in raw args denies). Existing
allow/deny tests continue to pass via the synthesized-mode fallback.

* fix(agents): honor effective exec policy for Claude live Bash

---------

Co-authored-by: Guillaume Thirry <g.thirry@gmail.com>
2026-05-25 11:39:17 -04:00
Vincent Koc
99997e4441 fix(test): stabilize e2e runtime imports 2026-05-25 17:35:26 +02:00
Vincent Koc
633e4b8a7c fix(test): clean plugin gauntlet temp roots 2026-05-25 17:29:51 +02:00
Peter Steinberger
69d728ac4f perf: cache plugin package realpaths (#86517) 2026-05-25 16:26:36 +01:00
Vincent Koc
2cac9e54b4 fix(qa): settle restart races with live budget 2026-05-25 17:20:54 +02:00
Vincent Koc
50d6611c10 test(crabbox): tolerate Windows shell capture 2026-05-25 17:20:54 +02:00
Vincent Koc
8a93851ee2 fix(qa): extend config cleanup Windows budget 2026-05-25 17:20:54 +02:00
Vincent Koc
e97e831c12 fix(crabbox): sync full sparse lease runs 2026-05-25 17:20:54 +02:00
Vincent Koc
3f363e0450 fix(qa): extend config mutation Windows budget 2026-05-25 17:20:54 +02:00
Chunyue Wang
89aea9b843 fix(sessions): stop doctor OOM on large session stores and reclaim stale store temps (#85967)
* fix(sessions): stop doctor OOM on large session stores and reclaim stale store temps

`openclaw doctor` loaded the full sessions.json via loadSessionStore with the
default cache-write plus return clone, materializing a multi-hundred-MB
monolithic store several times and exhausting the heap (#56827). The read-only
doctor checks (state integrity, heartbeat target, codex route scan) now load
with { skipCache: true, clone: false } so the store is materialized once.

Orphaned session-store atomic-write temps were also never reclaimed: the store
write went through the generic atomic writer, staging a shared
.fs-safe-replace.<pid>.<uuid>.tmp not identifiable as a store temp. Give the
store write a store-specific tempPrefix so its temps stage as
sessions.json.<pid>.<uuid>.tmp, classify them (isSessionStoreTempArtifactName),
and reclaim stale ones via the disk-budget sweep and the unreferenced-artifact
prune on a short staleness window so in-flight temps are preserved.

Fixes #56827

* docs(changelog): note large session store doctor fix

* test(qa): preserve WhatsApp RTT source literal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-25 16:19:35 +01:00
clawsweeper[bot]
c4bce00727 fix(ollama): strip inline kimi cloud reasoning leak (#86515)
Summary:
- This PR adds an Ollama Kimi-cloud visible-content sanitizer for streamed and final assistant replies, updates stream handling and regression tests, and adds a changelog entry.
- PR surface: Source +183, Tests +473, Docs +1. Total +657 across 7 files.
- Reproducibility: yes. from source and the linked report: current main appends Ollama `message.content` direc ...  payload described in the issue would be shown. I did not run a live vendor repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ollama): sanitize kimi inline reasoning in stream events
- PR branch already contained follow-up commit before automerge: fix(ollama): buffer kimi cloud stream reasoning
- PR branch already contained follow-up commit before automerge: fix(ollama): cover kimi inline boundary variants
- PR branch already contained follow-up commit before automerge: fix(ollama): preserve text start partial state
- PR branch already contained follow-up commit before automerge: fix(ollama): bound kimi stream sanitizer hold
- PR branch already contained follow-up commit before automerge: fix(ollama): keep kimi sanitizer deltas append-only

Validation:
- ClawSweeper review passed for head b709229157.
- Required merge gates passed before the squash merge.

Prepared head SHA: b709229157
Review: https://github.com/openclaw/openclaw/pull/86515#issuecomment-4534945393

Co-authored-by: Jason O'Neal <jason.allen.oneal@gmail.com>
Co-authored-by: Onur Solmaz <2453968+osolmaz@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: osolmaz
Co-authored-by: osolmaz <2453968+osolmaz@users.noreply.github.com>
2026-05-25 15:16:42 +00:00