OpenClaw
OpenClaw tightens what embedded agents can see and spend
OpenClaw closes a gap where per-agent contextTokens did not constrain embedded runs, proposes model-visible warnings when tools loop, and preserves quiet Codex native-tool results instead of discarding them. Together they make runtime limits and failure signals part of the model-visible contract.
openclaw/openclaw PR #120343 is the inspected primary source: “fix(agents): apply per-agent contextTokens cap to embedded run context budget.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- openclaw/openclaw PR #120343 was created 2026-08-07T20:24:52Z and was closed at inspection; its title is “fix(agents): apply per-agent contextTokens cap to embedded run context budget.” - openclaw/openclaw PR #120572 was created 2026-08-08T11:33:02Z and was open at inspection; its title is “fix(agents): surface tool loop warnings to models.” - openclaw/openclaw PR #119835 was created 2026-08-06T04:48:27Z and was open at inspection; its title is “fix(codex): preserve quiet native tool results.” - The repository reported 385580 stars, 5631 open issues, default branch main, and last push 2026-08-09T00:56:46Z. - The latest tagged-release baseline checked was v2026.7.1-2 published 2026-08-04T00:41:26Z.
What changed
openclaw/openclaw PR #120343 reports: What Problem This Solves Embedded runs ignored the selected agent's contextTokens ceiling. The run instead fell back to agents.defaults.contextTokens, so prompt prechecks, compaction, and session metadata could disagree with the per-agent limit the operator configured. Why This Change Was Made The selected session agent is now resolved before OpenClaw-owned model policy and its configured ceiling is applied to the prepared attempt budget. That prepared budget is then carried into the effective model, normal and compaction session safeguard extensions, and result metadata instead of re-resolving mutable policy at each consumer. Standalone queued/direct compaction resolves the canonical session agent when no prepared attempt exists. Caller budgets remain ceilings within the configured agent cap and model window: | Requested | Agent cap | Model window | Effective | |---:|---:|---:|---:| | 500,000 | 200,000 | 500,000 | 200,000 | | 100,000 | 200,000 | 500,000 | 100,000 | | 500,000 | 200,000 | 64,000 | 64,000 | Native model-owned harnesses still return before OpenClaw context policy. Codex therefore continues to own its own model context window and automatic/manual compaction.
openclaw/openclaw PR #120572 reports: Closes #120449 What Problem This Solves Warning-tier tool-loop detections were emitted through server-side diagnostics but were not included in the normal tool result returned to the model. This left the model without the existing recovery guidance until the loop reached the critical blocking tier. Changes attach each emitted warning to its admitted tool call append and consume the warning once through the normal model-visible result path cover server-executed and client-executed tools preserve the warning when a tool throws and the failure becomes an error result clear pending warning state when an aborted call produces no result cover calls without a run ID and atomic batch rejection cleanup preserve existing diagnostics and critical-tier blocking behavior Warning-tier calls continue to execute normally. Evidence Focused validation: The regression coverage includes: warning delivery for successful server and client tool results a synthetic-model runAgentLoop integration regression that verifies a thrown server tool produces an error transcript result containing the warning one-time warning consumption for a throwing call without a run ID pending-warning cleanup when an aborted call produces no result
openclaw/openclaw PR #119835 reports: Summary High Level TLDR Quiet native Codex tools could outlive OpenClaw's attempt-progress budget and be interrupted before Codex delivered their authoritative completion item, which left the transcript synthesizer to report a missing tool.result. This change makes the attempt watchdog defer to active native-item ownership while preserving a bounded deadline for approval, elicitation, and user-input requests that do not have their own timeout. What Problem This Solves In a redacted live reproduction, Telegram topic 74466 started a quiet foreground native command and was interrupted at the attempt-idle deadline with synthesized missing-result text. Topic 8428 was active concurrently on the same physical Codex app-server client, produced periodic output, received its native result, and completed normally. The shared-client router kept the topics distinct; the quiet command was misclassified as stalled attempt progress before its native item/completed arrived. On current main, scheduleAttemptIdleWatch() only considered whether the watch was armed, and fireAttemptIdleTimeout() did not consult active completion-blocking native items. The previous PR revision overcorrected by suppressing the attempt watch for every active app-server request. That removed the only liveness deadline
Why it matters
A configured limit that misses one execution path is not a limit. Likewise, a host warning or tool result that never reaches the model invites repeated work and misleading completion. The operator test is whether visible output, retained state and authority still describe the same event after retries, background work or restart.
Current
The primary record was closed when captured on 2026-08-09. The tagged-release baseline was v2026.7.1-2 published 2026-08-04T00:41:26Z. Repository metadata, full source bodies, current pull requests and issues, releases, Google News, Hacker News, Lobsters, Metamesh and the rendered ClawCharts row were inspected. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/openclaw/openclaw/pull/120343. Supporting records are https://github.com/openclaw/openclaw/pull/120572 and https://github.com/openclaw/openclaw/pull/119835. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts and reproductions remain attributed to their authors unless identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Apply budgets at the final execution boundary, carry structured warnings into the next model turn, and preserve empty-versus-quiet tool outcomes distinctly. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.