ZeroClaw

ZeroClaw catches delegated agents ignoring their thinking policy

A ZeroClaw report says independent delegates ignore the target thinking setting; the paired runtime patch applies that policy to delegated execution. Related provider work tightens OAuth callback and refresh contracts at another delegation boundary.

← Back to homeOriginal source ↗

zeroclaw-labs/zeroclaw issue #10020 is the inspected primary source: “[Bug]: Agentic independent delegates ignore the target thinking policy.” The related records below were inspected as supporting context rather than independent confirmation.

The facts

- zeroclaw-labs/zeroclaw issue #10020 was created 2026-08-16T00:18:04Z and was open at inspection; its title is “[Bug]: Agentic independent delegates ignore the target thinking policy.” - zeroclaw-labs/zeroclaw PR #10021 was created 2026-08-16T00:20:40Z and was open at inspection; its title is “fix(runtime): apply target thinking to independent delegates.” - zeroclaw-labs/zeroclaw PR #10012 was created 2026-08-15T15:24:44Z and was open at inspection; its title is “fix(providers): enforce OAuth callback and refresh contracts.” - The repository reported 32592 stars, 708 open issues, default branch master, and last push 2026-08-15T23:17:51Z. - The latest tagged-release baseline checked was v0.8.4 published 2026-08-02T21:00:00Z.

What changed

zeroclaw-labs/zeroclaw issue #10020 reports: Affected component runtime/daemon Severity S2 — degraded behavior Current behavior An agentic delegate call with mode = "independent" resolves the target agent runtime profile, but does not apply that profile’s thinking configuration to the target child model loop. Consequently, the child can inherit the caller’s native-thinking override instead of using the target configured policy. A target configured for native max thinking may send no native-thinking budget, while a non-native target may miss its thinking prompt prefix. Bounded delegation is not affected: it is intended to retain the caller execution context. Expected behavior An independent agentic delegate should run with the target runtime profile’s resolved thinking policy: Native-thinking targets use the target native-thinking setting and effective level. Non-native targets receive the target thinking prompt policy. Any caller-native-thinking scope is restored after the child completes, errors, or times out. Bounded delegation keeps its existing caller-context behavior. Steps to reproduce 1. Configure a target agent with an agentic runtime profile and a thinking policy, for example: 2. Configure a caller that can delegate to that target using mode = "independent". 3. Invoke the caller’s delegate tool for the target. 4. Inspect the target child model request, or use a recording provider in a regression test. Actual result The independent child does not use

zeroclaw-labs/zeroclaw PR #10021 reports: Summary **Base branch:** master **What changed and why:** Apply the resolved target runtime profile thinking policy to agentic independent delegates. Scope the target native-thinking override across the child loop so non-native targets clear inherited state and parent state is restored afterward. Apply the target prompt prefix and temperature adjustment, with regression coverage for native, non-native, and bounded delegation. **Scope boundary:** Does not change non-agentic delegation, target selection, tool policy, or bounded delegation semantics. **Blast radius:** Agentic independent delegate model requests now use the selected target runtime thinking policy instead of the caller inherited scope. **Linked issue(s):** Closes #10020 **Labels:** bug, runtime, tool:delegate, risk:high, size:M Testing (required) How you can test (when useful) **Reviewer testing requested?** N/A — recording-provider regression tests directly inspect the child model request and task-local override restoration. How I tested **CI checks relied on and why they cover this change:** GitHub CI is pending; local validation covers the changed runtime crate, all test targets for Clippy, and repository comment hygiene. **Known CI coverage gap, if any:** Full workspace tests and Linux CI are pending; no live provider or deployment was exercised. **Commands run and tail output:** Each targeted test passed; Clippy completed successfully; the hygiene test reported 58 passed, 0 failed; and the worktree hygiene gate reported

zeroclaw-labs/zeroclaw PR #10012 reports: Summary **Base branch:** master **What changed and why:** Separate structured OAuth callback parsing from explicit manual-code entry so recognized callback URLs and OAuth query-form pastes cannot bypass PKCE state validation. Apply one permanent/transient refresh-error policy to OpenAI, Gemini, xAI, and Email OAuth refreshes so permanent failures stop retrying while temporary failures keep bounded retries. Reject empty access tokens before they can be persisted, and preserve Gemini refresh HTTP status for reliable classification. **Scope boundary:** This does not change OAuth configuration, token storage locations, permissions, provider endpoints, request types, or maximum retry attempts. Permanent failures may now make fewer refresh requests because retries stop earlier; an HTTP-success response that cannot be decoded as JSON is also treated as permanent and is not retried. **Blast radius:** OpenAI and Gemini callback/manual-code parsing, plus refresh retry decisions shared by OpenAI, Gemini, xAI, and Email OAuth consumers. **Linked issue(s):** None. **Labels:** bug, provider, security, risk:high, size:L Testing (required) How you can test (when useful) **Reviewer testing requested?** N/A; the affected callback, manual-code, retry, and malformed-token boundaries are deterministic and covered directly by unit tests without requiring reviewers to use live OAuth credentials. How I tested **CI checks relied on and why they cover this change:** Required CI passed on the published head, including Lint, Test,

Why it matters

A child agent that silently changes reasoning policy can change cost, latency and behavior. Provider callbacks similarly need explicit ownership instead of inheriting ambient assumptions. The operator test is whether the system remains bounded and its receipts still describe the action after failure, retry or restart.

Current

The primary record was open when captured on 2026-08-16. The tagged-release baseline was v0.8.4 published 2026-08-02T21:00:00Z. 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/zeroclaw-labs/zeroclaw/issues/10020. Supporting records are https://github.com/zeroclaw-labs/zeroclaw/pull/10021 and https://github.com/zeroclaw-labs/zeroclaw/pull/10012. 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

Record the delegated model and thinking policy in each child receipt, test independent and shared delegates, and bind OAuth refreshes to the intended provider identity. 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.