fix(codex): quarantine unreadable dynamic tools#89481
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 2, 2026, 10:27 AM ET / 14:27 UTC. Summary PR surface: Source +140, Tests +154. Total +294 across 2 files. Reproducibility: yes. Current main directly reads dynamic tool descriptor fields during projection/spec creation, and the PR adds focused tests with throwing getters that exercise that source path. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Next step before merge
Security Review detailsBest possible solution: Keep the bridge-level descriptor quarantine and land it after normal maintainer draft/CI gates if maintainers agree with strict quarantine for unreadable descriptors. Do we have a high-confidence way to reproduce the issue? Yes. Current main directly reads dynamic tool descriptor fields during projection/spec creation, and the PR adds focused tests with throwing getters that exercise that source path. Is this the best way to solve the issue? Yes. The bridge is the narrow owner boundary because it is where OpenClaw turns runtime tools into Codex specs and wraps executable tools; build-time schema filtering already covers some parameter cases but not unreadable descriptions or final spec emission. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against c8d21fe7f05b. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +140, Tests +154. Total +294 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
d6df61b to
dce044a
Compare
|
Closing this as the near-winner folded into the landed canonical PR: #90022 This PR had the stronger earlier proof signal, but #90022 was the current functional superset: it keeps the unreadable/invalid descriptor quarantine and also adds wrapping-time failure quarantine plus registered durable spec filtering so Codex is not advertised tools that cannot execute in the current turn. Landed squash commit: 3ffb360 |
Summary
Verification
node scripts/run-vitest.mjs extensions/codex/src/app-server/dynamic-tools.test.ts -- --reporter=dot./node_modules/.bin/oxfmt --check --threads=1 extensions/codex/src/app-server/dynamic-tools.ts extensions/codex/src/app-server/dynamic-tools.test.ts./node_modules/.bin/oxlint extensions/codex/src/app-server/dynamic-tools.ts extensions/codex/src/app-server/dynamic-tools.test.tsgit diff --check.agents/skills/autoreview/scripts/autoreview --mode local --no-web-searchrun_8adb0867537d, leasecbx_5a28a16938b0, provideraws, commandcorepack pnpm check:changed, exit 0Real behavior proof
Behavior addressed: Codex app-server dynamic tool bridge no longer crashes before content when a dynamic tool list entry or descriptor field is unreadable.
Real environment tested: local macOS checkout with Node 24 via repo Vitest wrapper; AWS Crabbox fresh PR checkout on Linux Node 24.15.0.
Exact steps or command run after this patch:
node scripts/run-vitest.mjs extensions/codex/src/app-server/dynamic-tools.test.ts -- --reporter=dot; AWS Crabboxcorepack pnpm check:changedon PR #89481.Evidence after fix: focused Codex dynamic-tools suite passed 38 tests; AWS Crabbox run
run_8adb0867537dpassed changed lanesextensions, extensionTests.Observed result after fix: malformed dynamic tools are quarantined, warnings/diagnostics name the offending tool or index, healthy sibling specs remain available, and healthy tool calls still execute.
What was not tested: full repository test suite.