Before submitting
Area
apps/desktop
Steps to reproduce
- Use T3 Code with the claudeAgent provider on Claude CLI 2.1.121 (the version
~/.local/bin/claude currently resolves to).
- Start a thread and get the model to call the AskUserQuestion tool — e.g. ask it to confirm a multi-option decision via structured questions.
- When the question UI appears, pick an option and submit.
- Observe the next assistant turn: the model has no awareness of what was selected and typically asks again or proceeds blindly.
Expected behavior
The model's next turn receives a tool_result whose content includes the selected answer, e.g.:
User has answered your questions: "Approach"="Option A". You can now continue with the user's answers in mind.
Actual behavior
The model receives a tool_result whose content has an empty interpolation:
User has answered your questions: . You can now continue with the user's answers in mind.
The answer is captured correctly inside T3's own event log (user-input.resolved, tool_use_result.answers), but is dropped before it reaches the model on the next turn.
Impact
Major degradation or frequent failure
Version or commit
T3 Code Alpha (stable channel), Claude CLI 2.1.121
Environment
macOS, claudeAgent provider, Claude CLI 2.1.121 (regressed from 2.1.119)
Logs or stack traces
Root cause (best guess from comparing the two SDK versions)
Between Claude CLI 2.1.119 (worked) and 2.1.121 (broken), the SDK's mapToolResultToToolResultBlockParam for AskUserQuestion changed how it constructs the tool_result string:
2.1.119 (worked) — key-agnostic:
({answers, annotations}, q) => ({
type: "tool_result",
content: `User has answered your questions: ${
Object.entries(answers).map(([k, v]) => …).join(", ")
}. You can now continue with the user's answers in mind.`
})
2.1.121 (broken) — looks up by full question text:
({questions, answers, annotations}, K) => ({
type: "tool_result",
content: `User has answered your questions: ${
questions
.map(({question}) => {
const a = answers[question]; // looked up by question text
if (!a && !annotations?.[question]?.notes) return null;
return `"${question}"="${a}"`;
})
.filter(x => x !== null)
.join(", ")
}. You can now continue with the user's answers in mind.`
})
T3 currently submits answers keyed by header (e.g. "Approach"), not by the full question text (e.g. "Which approach do you prefer?"). Under 2.1.119 that was fine because the SDK iterated whatever keys came in. Under 2.1.121, every answers[question] lookup misses, every entry is filtered out as null, the array stringifies to empty, and the model sees no answer.
Suggested fix
Update T3's AskUserQuestion result handler so the answers object it returns to the SDK is keyed by the full question string, matching the documented outputSchema shape ("question text" -> "answer string"). The header field is intended for UI display only.
Workaround
Pin to the previous Claude CLI version:
ln -sfn ~/.local/share/claude/versions/2.1.119/claude ~/.local/bin/claude
# then restart T3 Code
Before submitting
Area
apps/desktop
Steps to reproduce
~/.local/bin/claudecurrently resolves to).Expected behavior
The model's next turn receives a
tool_resultwhose content includes the selected answer, e.g.:Actual behavior
The model receives a
tool_resultwhose content has an empty interpolation:The answer is captured correctly inside T3's own event log (
user-input.resolved,tool_use_result.answers), but is dropped before it reaches the model on the next turn.Impact
Major degradation or frequent failure
Version or commit
T3 Code Alpha (stable channel), Claude CLI 2.1.121
Environment
macOS, claudeAgent provider, Claude CLI 2.1.121 (regressed from 2.1.119)
Logs or stack traces
Root cause (best guess from comparing the two SDK versions)
Between Claude CLI 2.1.119 (worked) and 2.1.121 (broken), the SDK's
mapToolResultToToolResultBlockParamforAskUserQuestionchanged how it constructs the tool_result string:2.1.119 (worked) — key-agnostic:
2.1.121 (broken) — looks up by full question text:
T3 currently submits
answerskeyed byheader(e.g."Approach"), not by the fullquestiontext (e.g."Which approach do you prefer?"). Under 2.1.119 that was fine because the SDK iterated whatever keys came in. Under 2.1.121, everyanswers[question]lookup misses, every entry is filtered out asnull, the array stringifies to empty, and the model sees no answer.Suggested fix
Update T3's AskUserQuestion result handler so the
answersobject it returns to the SDK is keyed by the fullquestionstring, matching the documentedoutputSchemashape ("question text" -> "answer string"). Theheaderfield is intended for UI display only.Workaround
Pin to the previous Claude CLI version: