0.117.0 regression: UserPromptSubmit hook output is not rendered in TUI/app-server path
What version of Codex CLI is running?
0.117.0
What subscription do you have?
Plus
Which model were you using?
_No response_
What platform is your computer?
_No response_
What terminal emulator and version are you using (if applicable)?
_No response_
What issue are you seeing?
In Codex CLI 0.117.0, UserPromptSubmit hook output is not rendered in the TUI when running through the app-server path.
This is visible in at least two cases:
- Cold start in default mode, where the first prompt is blocked by a
UserPromptSubmithook. - Resuming an old conversation in default mode and then sending input.
Expected hook UI such as:
Running UserPromptSubmit hook: checking go-workflow input policyUserPromptSubmit hook (stopped)warning: go-workflow must start from PlanMode...
does not appear at all. Instead, the UI immediately returns to a new input box with no visible hook message.
On 0.116, the same setup does show the hook output correctly.
I locally patched 0.117.0 from source and confirmed the regression appears to have two parts:
- app-server
HookStarted/HookCompletednotifications are dropped during conversion before rendering - in the no-primary-thread cold-start path, hook notifications can also be buffered and never shown
So this does not appear to be only a “first prompt” issue.
What steps can reproduce the bug?
- Configure a
UserPromptSubmithook that blocks input and emits visible stop/warning text. - Start Codex CLI 0.117.0 in default mode.
- Submit a prompt that triggers the hook, for example
$go-workflow. - Observe that no hook text is rendered and the UI immediately shows another input prompt.
Also reproducible when:
- Resume an existing conversation in default mode.
- Submit input that triggers the same
UserPromptSubmithook. - Observe that no hook output is shown.
What is the expected behavior?
The TUI should render the hook status and stop output, similar to 0.116, for example:
Running UserPromptSubmit hook: ...UserPromptSubmit hook (stopped)- the emitted warning/stop lines
Additional information
Regression observed between 0.116 and 0.117.0.
If useful, I have a local source patch against rust-v0.117.0 that restores visibility by:
- explicitly converting app-server hook notification payloads instead of relying on JSON shape conversion
- rendering hook notifications immediately when no primary thread/session exists yet
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗