Regression in 2.1.111/2.1.112: AskUserQuestion crashes CLI during team-mode coordination
Title: Regression in 2.1.111/2.1.112: AskUserQuestion crashes CLI during team-mode coordination
Body:
Summary
Starting from 2.1.111, the CLI crashes when a team-mode coordinator subagent triggers an AskUserQuestion-like flow against the main thread. 2.1.110 is the last known good version.
Environment
- Claude Code versions tested:
- ✅ 2.1.110 — works
- ❌ 2.1.111 — crashes (installed 2026-04-17 01:06 UTC)
- ❌ 2.1.112 — crashes (installed 2026-04-17 05:10 UTC)
- Install method: native installer (bun-packaged binary at
~/.local/share/claude/versions/<ver>) - OS: Linux 6.8.0-94-generic (Ubuntu-like), Rocky 9 family
- Shell: bash
- Relevant env flags:
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1CLAUDE_CODE_NO_FLICKER=1CLAUDE_CODE_SUBAGENT_MODEL=opus[1m]- Enabled plugins:
skill-creator@claude-plugins-official,codex@openai-codex,context7@claude-plugins-official
Reproduction
- Running on 2.1.111 or 2.1.112 with agent-teams experimental flag enabled.
- Invoke a team-mode workflow (in my case a project-local
/review-featureslash command with a team coordinator agent). - Coordinator subagent requests input from main via an
AskUserQuestion-style elicitation. - CLI throws an uncaught exception in the React render path at
cli.js:8233:15642and the session becomes unusable.
Rolling back the symlink to 2.1.110 restores normal behavior with zero other changes.
Stack trace
<anonymous> (/$bunfs/root/src/entrypoints/cli.js:8233:15642)
$2 (/$bunfs/root/src/entrypoints/cli.js:477:63169)
aLH (.../cli.js:477:76220)
rV (.../cli.js:477:76101)
aLH (.../cli.js:477:76199)
rV (.../cli.js:477:76101)
aLH (.../cli.js:477:76199)
rV (.../cli.js:477:76101)
aLH (.../cli.js:477:77010)
rV (.../cli.js:477:76101)
The aLH → rV → aLH → rV ... pattern is the React reconciler retrying the same render; the exception happens inside the AskUserQuestion component render cycle.
Code neighborhood (from the minified bundle at 8233)
Q("tengu_ask_user_question_finish_plan_interview", { source: Z, questionCount: O.length, isInPlanMode: n, interviewPhaseEnabled: n && lw() });
let oH = await xM6(F, i);
K(); q.onReject(L$, oH && oH.length > 0 ? oH : void 0);
async function xM6(H, $) {
if (H.length === 0) return; // returns undefined when H is empty
return Promise.all(H.map(async (q) => {
let { block: K } = await KE({ data: q.content, mediaType: q.mediaType, limits: $ });
return K;
}));
}
Suspicion: xM6 returns undefined in the empty-input path while callers on the finish_plan_interview / reject path may access .length or iterate without guarding, causing the crash to loop through the render tree.
Workaround
ln -sfn ~/.local/share/claude/versions/2.1.110 ~/.local/bin/claude
# Optional: pin via settings.json env
# "DISABLE_AUTOUPDATER": "1"
Request
- Please confirm the regression range (2.1.110 → 2.1.111) and ship a fix on the latest channel.
- If a diagnostic build with debug symbols is helpful, happy to run it.
Thanks.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗