Skip to content

fix(tools): allow no-tool llm-task runs#76686

Merged
clawsweeper[bot] merged 1 commit into
mainfrom
codex/fix-74019
May 3, 2026
Merged

fix(tools): allow no-tool llm-task runs#76686
clawsweeper[bot] merged 1 commit into
mainfrom
codex/fix-74019

Conversation

@amknight

@amknight amknight commented May 3, 2026

Copy link
Copy Markdown
Member

Summary

Root cause

llm-task runs its JSON-only embedded model call with tools disabled. The empty explicit allowlist guard still saw inherited config allowlist sources like tools.allow / tools.alsoAllow and treated the intentionally empty callable tool set as a configuration failure.

Validation

  • pnpm test src/agents/tool-allowlist-guard.test.ts src/agents/pi-embedded-runner/run/attempt.test.ts
  • pnpm exec oxfmt --check --threads=1 src/agents/tool-allowlist-guard.ts src/agents/tool-allowlist-guard.test.ts src/agents/pi-embedded-runner/run/attempt.ts
  • git diff --check
  • pnpm changed:lanes --json

Testbox pnpm check:changed was not run because blacksmith is not installed and no Testbox org environment is configured in this workspace.

Fixes #74019

@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: S maintainer Maintainer-authored PR labels May 3, 2026
@clawsweeper

clawsweeper Bot commented May 3, 2026

Copy link
Copy Markdown
Contributor

Codex review: passed.

Summary
The branch marks runtime toolsAllow sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.

Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on current main shows llm-task disables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Next step before merge
No repair job is needed; the automerge-opted PR has no blocking findings and should be gated by exact-head CI and mergeability.

Security
Cleared: The diff only changes local TypeScript guard logic, tests, and changelog text; it adds no dependency, workflow, secret, or code-execution surface.

Review details

Best possible solution:

Land this narrower guard-source distinction once exact-head CI and mergeability are green, then close the older alternative #74139 as superseded if it remains open.

Do we have a high-confidence way to reproduce the issue?

Yes. The linked report gives concrete config and invocation steps, and source inspection on current main shows llm-task disables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Is this the best way to solve the issue?

Yes. Filtering disabled-tool guard inputs to explicitly enforced runtime sources is narrower than skipping the guard entirely and preserves the existing caller-supplied toolsAllow fail-closed contract.

What I checked:

Likely related people:

  • steipete: Introduced the empty explicit tool allowlist guard in commit 61ee67a and has recent llm-task and embedded-runner maintenance touching the affected behavior. (role: introduced guard and recent maintainer; confidence: high; commits: 61ee67aecc3f, b97a6f284904, 2dcc4605d490; files: src/agents/tool-allowlist-guard.ts, src/agents/tool-allowlist-guard.test.ts, src/agents/pi-embedded-runner/run/attempt.ts)
  • vignesh07: Introduced the optional JSON-only llm-task plugin and its embedded-runner integration in feat: add optional llm-task JSON-only tool #1498. (role: introduced related plugin surface; confidence: high; commits: 95d45c0aa7a2; files: extensions/llm-task/src/llm-task-tool.ts, extensions/llm-task/src/llm-task-tool.test.ts, extensions/llm-task/README.md)
  • obviyus: Recently changed the embedded-runner tool allowlist composition path for plugin-only allowlists, adjacent to the PR's runtime toolsAllow handling. (role: adjacent owner; confidence: medium; commits: 02d7ad482083; files: src/agents/pi-embedded-runner/run/attempt.ts)

Remaining risk / open question:

  • Two exact-head CI checks were still in progress at review time, so merge should wait for those checks to complete.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 0459bff55635.

@amknight
amknight marked this pull request as ready for review May 3, 2026 12:55
@amknight

amknight commented May 3, 2026

Copy link
Copy Markdown
Member Author

/clawsweeper automerge

@clawsweeper clawsweeper Bot added the clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge label May 3, 2026
@clawsweeper

clawsweeper Bot commented May 3, 2026

Copy link
Copy Markdown
Contributor

🦞🦞
ClawSweeper automerge is enabled.

  • Head: 9c3e5f773e66
  • Label: clawsweeper:automerge (pause labels cleared)
  • Action: exact-head review queued.
  • Flow: review this head, repair/rebase only if needed, then re-review the exact repaired head before merge.

Draft PRs stay fix-only until GitHub marks them ready for review. Pause with /clawsweeper stop.

Automerge progress:

  • 2026-05-03 13:42:37 UTC review queued [`9c3e5f773e66`](https://github.com/openclaw/openclaw/commit/9c3e5f773e66b71eb163b47558f6624a6701c1e3) (queued)
  • 2026-05-03 13:00:07 UTC review passed [`9c3e5f773e66`](https://github.com/openclaw/openclaw/commit/9c3e5f773e66b71eb163b47558f6624a6701c1e3) (structured ClawSweeper verdict: pass (sha=9c3e5f773e66b71eb163b47558f6624a6701c...)
  • 2026-05-03 13:42:34 UTC merged [`9c3e5f773e66`](https://github.com/openclaw/openclaw/commit/9c3e5f773e66b71eb163b47558f6624a6701c1e3) (merged by ClawSweeper automerge)

@amknight

amknight commented May 3, 2026

Copy link
Copy Markdown
Member Author

/clawsweeper stop

@clawsweeper clawsweeper Bot added the clawsweeper:human-review Needs maintainer review before ClawSweeper can continue label May 3, 2026
@clawsweeper

clawsweeper Bot commented May 3, 2026

Copy link
Copy Markdown
Contributor

🦞🦞
Got it. ClawSweeper will leave this item for human review.

I added clawsweeper:human-review and paused the automation trail until a maintainer asks again.

@clawsweeper clawsweeper Bot removed the clawsweeper:human-review Needs maintainer review before ClawSweeper can continue label May 3, 2026
@clawsweeper
clawsweeper Bot merged commit 3491060 into main May 3, 2026
153 of 155 checks passed
@clawsweeper
clawsweeper Bot deleted the codex/fix-74019 branch May 3, 2026 13:42
lxe pushed a commit to lxe/openclaw that referenced this pull request May 6, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f7
Review: openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 9, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f7
Review: openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
greench-ai pushed a commit to greench-ai/nexisclaw that referenced this pull request May 12, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f773e66b71eb163b47558f6624a6701c1e3
Review: openclaw/openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
markfietje pushed a commit to markfietje/openclaw that referenced this pull request May 20, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f773e66b71eb163b47558f6624a6701c1e3
Review: openclaw/openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
markfietje pushed a commit to markfietje/openclaw that referenced this pull request May 20, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f773e66b71eb163b47558f6624a6701c1e3
Review: openclaw/openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f7
Review: openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f7
Review: openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Summary:
- The branch marks runtime `toolsAllow` sources as enforceable during disabled-tool runs, filters inherited allowlist sources in the guard, adds focused guard coverage, and updates the changelog.
- Reproducibility: yes. The linked report gives concrete config and invocation steps, and source inspection on ... sables tools while the guard still treats inherited allowlist sources plus zero callable tools as an error.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: 9c3e5f7
Review: openclaw#76686 (comment)

Co-authored-by: Alex Knight <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge maintainer Maintainer-authored PR size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Lobster workflow calling llm-task fails with “No callable tools remain” when tools.alsoAllow includes lobster/llm-task

1 participant