anthropics / anthropics/claude-agent-sdk-python
PreToolUse hook updatedInput has no effect on AskUserQuestion tool
- 主要语言
- Python
- 星标
- 8.1k
- 派生
- 1.3k
- 平均合并
- 2 天 31 分钟
- 30 天内合并 PR
- 1
描述
## Description
When a PreToolUse Python hook callback returns `updatedInput` for AskUserQuestion, the updated input is not reflected in the tool result that Claude sees. Claude continues as if no answer was provided.
## Steps to Reproduce
```python
async def ask_hook(hook_input, tool_use_id, hook_context):
return {
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"updatedInput": {"answer": "Jeremy"}, # This is ignored
}
}
options = ClaudeAgentOptions(
permission_mode="bypassPermissions",
cli_path="/home/tester/.local/bin/claude",
hooks={
"PreToolUse": [HookMatcher(matcher="AskUserQuestion", hooks=[ask_hook])],
},
)
async for msg in query(prompt="Ask my name with AskUserQuestion, then greet me", options=options):
if isinstance(msg, ResultMessage):
print(msg.result)
# Output: "It seems your answer didn't come through clearly!"
# Expected: "Hello, Jeremy!"
```
## Expected Behavior
`updatedInput: {"answer": "Jeremy"}` should replace the AskUserQuestion tool input, and Claude should see the answer in the tool result.
## Workaround
Use `permissionDecision: "deny"` with the answer in `permissionDecisionReason`:
```python
return {
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "The user has already provided their answer: Jeremy",
}
}
```
Claude reads the denial reason and uses the answer correctly.
## Environment
- claude-agent-sdk: 0.1.51
- Claude CLI: 2.1.86
- Python: 3.12
- OS: Linux (Docker)
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。