You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The live hook uses `deny` + reason (not `allow` + `updatedInput`). See the
108
+
hook header: AskUserQuestion's pre-resolve `updatedInput` shape is not
109
+
structurally pinned, so deny naming the recommended option is the reliable
110
+
path; the model reads the reason and proceeds without re-firing AUQ.
96
111
```json
97
112
{
98
113
"hookSpecificOutput": {
99
114
"hookEventName": "PreToolUse",
100
-
"permissionDecision": "allow",
101
-
"permissionDecisionReason": "plan-tune: never-ask preference on ship-test-failure-triage",
102
-
"updatedInput": {
103
-
"questions": [{ /* same as input, but with auto-selected answer */ }]
104
-
}
115
+
"permissionDecision": "deny",
116
+
"permissionDecisionReason": "[plan-tune auto-decide] ship-pre-landing-review-fix → A) Fix now (recommended) (your never-ask preference). Proceed with that option without re-prompting. Change with /plan-tune."
105
117
}
106
118
}
107
119
```
108
120
109
121
**Pass-through (no preference, or one-way safety override):**
122
+
Exit 0 with no stdout. If the hook has context to add, omit `permissionDecision`:
110
123
```json
111
124
{
112
125
"hookSpecificOutput": {
113
126
"hookEventName": "PreToolUse",
114
-
"permissionDecision": "defer"
127
+
"additionalContext": "optional context for Claude"
115
128
}
116
129
}
117
130
```
@@ -206,12 +219,11 @@ shells into bun.
206
219
examples: ship/SKILL.md.tmpl emits options like `"A) Fix now"
207
220
(recommended)`.
208
221
209
-
2.**Auto-decided event tagging.** When hook returns `updatedInput`, the
210
-
PostToolUse hook will see the resolved input and log a normal event.
211
-
Need an extra field on the PostToolUse payload (e.g.,
212
-
`was_auto_decided: true`) that the hook can set via session state
213
-
tracking — write a marker file in `~/.gstack/sessions/<id>/.auto-decided-<tool_use_id>`
214
-
from PreToolUse, read it from PostToolUse, delete on read.
222
+
2.**Auto-decided event tagging.** Auto-decide is `deny` + reason, so
223
+
PostToolUse never fires on that tool call. The PreToolUse hook itself
224
+
writes a session marker and logs `source=auto-decided` events before
225
+
deny (see `markAutoDecided` / `logAutoDecided` in the hook). No
226
+
PostToolUse payload field is required for the current path.
215
227
216
228
3.**Timeout behavior.** Default hook timeout is 60s but the docs are
217
229
thin on what happens at timeout. Set explicit `timeout: 5` so the
0 commit comments