Skip to content

fix(codex): make post-tool raw assistant timeout configurable#84974

Merged
vincentkoc merged 3 commits into
mainfrom
maint/pr-84135-post-tool-timeout
May 22, 2026
Merged

fix(codex): make post-tool raw assistant timeout configurable#84974
vincentkoc merged 3 commits into
mainfrom
maint/pr-84135-post-tool-timeout

Conversation

@vincentkoc

@vincentkoc vincentkoc commented May 21, 2026

Copy link
Copy Markdown
Member

Summary

Relationship

Verification

  • git diff --check origin/main...HEAD
  • CI=1 timeout 300s node scripts/run-vitest.mjs run --config test/vitest/vitest.extensions.config.ts extensions/codex/src/app-server/config.test.ts extensions/codex/src/app-server/run-attempt.test.ts -t "post-tool raw assistant|Codex app-server config|raw assistant progress"
  • GitHub checks on current rebased head 3d3cccae5e7bf3a169a2ede69ea78d4baa3ff479: passing; merge state CLEAN.
  • Crabbox current-head retries were blocked before execution by rsync transport failures, not code failures: run_2e8d4ef8e9f8 / cbx_94b0ff7d2a58, then run_8bcea25f992c / cbx_c973fe8ca285.

Real behavior proof

Behavior addressed: Post-tool raw assistant completion after a tool handoff can use a dedicated completion-idle timeout when configured, without changing pre-tool assistant release behavior or default timeout semantics.

Real environment tested: Local OpenClaw source checkout plus GitHub CI on rebased current head 3d3cccae5e7bf3a169a2ede69ea78d4baa3ff479.

Exact steps or command run after this patch: ran the focused local regression command above, rebased on current origin/main, pushed the replacement branch, and verified the fresh GitHub check rollup.

Evidence after fix: Focused local regression passed: 2 files passed, 46 tests passed, 184 skipped. Current-head GitHub checks passed with merge state CLEAN.

Observed result after fix: The config and post-tool raw assistant regression coverage pass on the rebased branch.

What was not tested: Full live Codex app-server/tool handoff. Current-head Crabbox proof was attempted twice but failed in the Crabbox rsync layer before test execution.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation extensions: codex size: S maintainer Maintainer-authored PR labels May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge.

Workflow note: Future ClawSweeper reviews update this same comment in place.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

Summary
The PR adds optional Codex appServer.postToolRawAssistantCompletionIdleTimeoutMs configuration, wires it into the post-tool raw assistant completion guard, and updates Codex docs, tests, manifest metadata, and changelog text.

Reproducibility: yes. for the source-level behavior: current main uses turnAssistantCompletionIdleTimeoutMs for the post-tool raw assistant completion guard, and the PR adds focused coverage for the configured override path. I did not execute tests because this review is read-only.

PR rating
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit
Patch quality: 🐚 platinum hermit
Summary: The PR has focused implementation and regression coverage with maintainer-supplied proof; remaining work is human acceptance of the opt-in availability tradeoff and normal check gating.

Rank-up moves:

  • none
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

Real behavior proof
Not applicable: The external contributor proof gate is not applicable because this is a MEMBER maintainer replacement PR; the body and follow-up comment include focused local, CI, Crabbox, and Testbox proof, with full live Codex handoff left untested.

Risk before merge

  • A very large configured postToolRawAssistantCompletionIdleTimeoutMs can intentionally delay stuck-turn detection and turn/interrupt after post-tool raw assistant progress.
  • This adds a new Codex plugin config knob while the default semantics decision remains in Codex app-server: evaluate post-tool raw assistant completion semantics #84137, so maintainers still need to accept the config surface and availability tradeoff.
  • The current head had in-progress checks during the API poll; merge should wait for required checks to finish green.

Maintainer options:

  1. Accept the opt-in timeout budget (recommended)
    Merge after maintainers agree that defaults remain compatible and only explicitly configured Codex deployments can keep stuck post-tool turns alive longer.
  2. Hold for the semantics decision
    Pause this PR if maintainers want to decide Codex app-server: evaluate post-tool raw assistant completion semantics #84137 before exposing a separate post-tool timeout knob.

Next step before merge
Protected maintainer label and MEMBER-authored Codex config-surface change require human acceptance of the opt-in availability tradeoff; no narrow automated repair is indicated.

Security
Cleared: No concrete security or supply-chain concern was found; the diff is limited to Codex timeout config, docs, tests, manifest metadata, and changelog text.

Review details

Best possible solution:

Merge the compatible opt-in timeout knob only if maintainers accept the availability tradeoff, while leaving default semantic changes to #84137.

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

Yes for the source-level behavior: current main uses turnAssistantCompletionIdleTimeoutMs for the post-tool raw assistant completion guard, and the PR adds focused coverage for the configured override path. I did not execute tests because this review is read-only.

Is this the best way to solve the issue?

Yes for the conservative path if maintainers accept the config surface: the PR preserves existing default behavior and scopes longer post-tool waits to an explicit Codex plugin config value. The broader default-budget question belongs in #84137.

Label justifications:

  • P2: This is a focused Codex plugin config/runtime improvement with limited blast radius and regression coverage.
  • merge-risk: 🚨 availability: A high configured post-tool raw assistant timeout can delay stuck-turn interruption for Codex app-server runs.
  • rating: 🐚 platinum hermit: Current PR rating is 🐚 platinum hermit because proof is 🐚 platinum hermit, patch quality is 🐚 platinum hermit, and The PR has focused implementation and regression coverage with maintainer-supplied proof; remaining work is human acceptance of the opt-in availability tradeoff and normal check gating.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The external contributor proof gate is not applicable because this is a MEMBER maintainer replacement PR; the body and follow-up comment include focused local, CI, Crabbox, and Testbox proof, with full live Codex handoff left untested.

What I checked:

Likely related people:

  • joshavant: Authored recent merged Codex app-server work on the post-tool raw assistant terminal guard and missing-completion handling that this PR builds on. (role: recent feature-history owner; confidence: high; commits: 562d460d7599, 7cda26aa6c72, ba06376c7955; files: extensions/codex/src/app-server/run-attempt.ts, extensions/codex/src/app-server/run-attempt.test.ts, extensions/codex/src/app-server/config.ts)
  • IWhatsskill: Authored the merged raw assistant completion release work that established adjacent behavior in the same Codex app-server runtime path. (role: adjacent raw-assistant behavior contributor; confidence: medium; commits: f50c65f12454; files: extensions/codex/src/app-server/run-attempt.ts, extensions/codex/src/app-server/run-attempt.test.ts, docs/plugins/codex-harness.md)
  • vincentkoc: Opened this MEMBER replacement PR, moved the changelog entry to unreleased, and posted maintainer follow-up proof and scope boundaries for the Codex app-server stack. (role: current replacement PR owner; confidence: medium; commits: f82e9ab27c1a; files: CHANGELOG.md)

Codex review notes: model gpt-5.5, reasoning high; reviewed against 7f4bd454febf.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: 🥚 common Brave Test Hopper

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: collects tiny proofs.
Image traits: location artifact grotto; accessory rollback rope; palette rose quartz and slate; mood celebratory; pose balancing on a branch marker; shell smooth pearl shell; lighting gentle morning glow; background delicate sparkle particles.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Brave Test Hopper in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@vincentkoc

Copy link
Copy Markdown
Member Author

maintainer follow-up after reviewing this with the wider Codex app-server stack: #83200/#83222, #83476, #84135, #84137, #84492/#84494, and #84516.

This is the maintainer-copy replacement for #84135 because the source PR has maintainerCanModify=false. It preserves the contributor patch/authorship and adds the docs/changelog alignment needed to make the config surface shippable.

proof:

  • focused Vitest config/raw-assistant-progress cases passed locally.
  • Crabbox fresh PR focused run passed: run_b0341d2ba17d / cbx_2b471a82c510.
  • Blacksmith Testbox changed gate passed: tbx_01ks5f478hn9sm2mcwbfzhzf2m, exit 0.

scope boundary: this is a conservative operator knob for post-tool raw assistant completion waits. It does not decide the broader #84137 semantic question, and it should not be treated as a fix for #84516's long-reply/final-delivery truncation path.

related fixed layers: #83222 supersedes #83200 for streamed command-output preservation, and #83476 fixed the dynamic-tool diagnostic terminalization layer.

@vincentkoc vincentkoc marked this pull request as ready for review May 21, 2026 14:40
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels May 21, 2026
@vincentkoc vincentkoc force-pushed the maint/pr-84135-post-tool-timeout branch from 55874d0 to 3d3ccca Compare May 21, 2026 15:52
@altaywtf altaywtf assigned altaywtf and unassigned altaywtf May 21, 2026
@vincentkoc vincentkoc force-pushed the maint/pr-84135-post-tool-timeout branch from 3d3ccca to f82e9ab Compare May 22, 2026 01:23
@vincentkoc vincentkoc force-pushed the maint/pr-84135-post-tool-timeout branch from f82e9ab to 38c1776 Compare May 22, 2026 01:34
@vincentkoc vincentkoc merged commit 60d200f into main May 22, 2026
93 checks passed
@vincentkoc vincentkoc deleted the maint/pr-84135-post-tool-timeout branch May 22, 2026 01:39
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
galiniliev pushed a commit to galiniliev/openclaw that referenced this pull request May 25, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
…aw#84974)

* fix(codex): make post-tool raw assistant timeout configurable

* docs(codex): align post-tool assistant timeout docs

* docs(changelog): move codex timeout note to unreleased

---------

Co-authored-by: 0x505badc0de <32790662+rozmiarD@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation extensions: codex maintainer Maintainer-authored PR merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. P2 Normal backlog priority with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: S status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants