generated from nhcarrigan/template
chore: evaluate defer permission response support for PreToolUse hooks (v2.1.89) #257
Closed
opened 2026-04-13 09:11:51 -07:00 by hikari
·
1 comment
No Branch/Tag Specified
main
dependencies/update--tauri-apps-plugin-fs
dependencies/update--tauri-apps-plugin-dialog
dependencies/update--codemirror-language
dependencies/update--codemirror-lang-yaml
dependencies/update-tailwindcss
dependencies/update--tailwindcss-vite
dependencies/update--vitest-coverage-v8
dependencies/update--codemirror-commands
dependencies/update--codemirror-state
dependencies/update-prettier-plugin-svelte
dependencies/update--codemirror-lang-javascript
dependencies/update-lucide-svelte
dependencies/update-marked
dependencies/update-typescript-eslint
dependencies/update-svelte
dependencies/update-eslint-plugin-svelte
dependencies/update--codemirror-view
dependencies/update-eslint
dependencies/update--eslint-js
dependencies/update--tauri-apps-cli
dependencies/update--sveltejs-kit
dependencies/update--tauri-apps-plugin-shell
dependencies/update--tauri-apps-api
dependencies/update-jsdom
dependencies/update-globals
dependencies/update-svelte-check
feat/providers
fix/paths
dependencies/update-vitest
dependencies/update-vite
dependencies/update-typescript
dependencies/update-prettier
dependencies/update--sveltejs-vite-plugin-svelte
dependencies/update--sveltejs-adapter-static
dependencies/update-codemirror
dependencies/update--tauri-apps-plugin-store
dependencies/update--tauri-apps-plugin-os
dependencies/update--tauri-apps-plugin-opener
dependencies/update--tauri-apps-plugin-notification
v1.14.0
v1.13.0
v1.12.0
v1.11.1
v1.11.0
v1.10.0
v1.9.0
v1.8.1
v1.8.0
v1.7.0
v1.6.0
v1.5.1
v1.5.0
v1.4.0
v1.3.0
v1.2.0
v1.1.1
v1.1.0
v1.0.0
v0.3.0
v0.2.0
v0.1.0
Labels
Clear labels
aspect
code
Concerns the software code in the repository
aspect
dx
Concerns developers' experience with the codebase
aspect
interface
Concerns end-users' experience with the software
aspect
text
Concerns the documentation material in the repository
contribute
good first issue
A great opportunity for a team member to learn a new codebase
contribute
help wanted
Open for anyone on our team to grab.
contribute
staff only
Restricted to our executive leadership.
goal
addition
Addition of new feature
goal
fix
Bug fix
goal
improvement
Improvement to an existing feature
points
1
Very simple issue requiring minimal effort and complexity.
points
13
Extremely complex issue representing major undertakings. Should be broken down into smaller pieces.
points
2
Simple issue that requires a bit more thought or investigation.
points
3
Moderate complexity issue requiring more substantial work.
points
5
Complex issue requiring significant effort and expertise.
points
8
Very complex issue requiring extensive work and deep expertise.
priority
critical
1
Must be fixed ASAP
priority
high
2
Stalls work on the project or its dependents
priority
low
4
Low priority and doesn't need to be rushed
priority
medium
3
Not blocking but should be fixed soon
priority
none
5
No priority, should only be performed when a developer is available
status
awaiting triage
Has not been triaged & therefore, not ready for work
status
blocked
Blocked and therefore not ready for work
status
discarded
Will not be worked on
status
discontinued
Not suitable for work as repo is in maintenance
status
label work required
Needs proper labelling before it can be worked on
status
ready for dev
Ready for work
status
ticket work required
Needs more details before it can be worked on
talk
discussion
Open for discussions and feedback
talk
question
Can be resolved with an answer
time
1 day
Approximately one full day of development work.
time
1-2 weeks
One to two weeks of focused development effort.
time
2-3 days
Two to three days of development effort.
time
4-5 days
Approximately one week of development work.
time
<1 day
Less than one day of focused work. Quick fixes or simple tasks.
time
>2 weeks
More than two weeks of development work. Must be broken down into smaller pieces.
No Label
Milestone
No items
No Milestone
Assignees
gurkirat
hanna (Hanna Rose)
hikari (Hikari)
minori (Minori)
naomi (Naomi Carrigan)
rain
teklu
tim
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: nhcarrigan/hikari-desktop#257
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Claude Code v2.1.89 added a new
"defer"decision value forPreToolUsehook responses. Previously hooks could respond with"allow"or"deny";"defer"means "let the normal permission system decide."Why This Matters
Hikari Desktop uses a workspace trust gate implemented via hooks. If we ever extend our hook response logic to send structured decisions back to Claude Code, we need to be aware of and potentially support
"defer"as a valid response — particularly for cases where we want to pass control back to the user rather than making a blanket decision.Tasks
src-tauri/src/wsl_bridge.rs"defer"responses"defer"as a valid hook response variant insrc-tauri/src/types.rsReferences
src-tauri/src/wsl_bridge.rs— workspace trust gate / hook handlingsrc-tauri/src/types.rs✨ This issue was created with help from Hikari~ 🌸
Investigation Results
After reviewing
wsl_bridge.rs, Hikari Desktop does not implement any PreToolUse hook response mechanism. Our workspace trust gate works at session startup via--allowedToolsCLI flags — we don't dynamically respond to hook invocations during a session.Claude Code's hook response system (where a hook script writes
{"decision": "allow"},{"decision": "deny"}, or{"decision": "defer"}to stdout) is an external process model. Hikari Desktop receives hook event notifications (emitted to stderr and parsed by the bridge), but we don't write responses back.Conclusion
No action required. The
deferdecision value is only relevant if we implement a dynamic PreToolUse hook response system in the future. Until then, this has nothing to attach to.If we ever build a runtime permission approval UI (where the user approves/denies individual tool calls interactively),
deferwould be the right default for tools that aren't pre-approved. We can file a new feature issue at that point. Closing as not applicable.✨ This comment was added by Hikari~ 🌸