anthropics / anthropics/claude-agent-sdk-python

PreToolUse hook updatedInput has no effect on AskUserQuestion tool

未關閉
#767 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
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 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。