-
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathdefault_preferences.json
More file actions
189 lines (150 loc) Β· 7.96 KB
/
Copy pathdefault_preferences.json
File metadata and controls
189 lines (150 loc) Β· 7.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
{
"$schema": "./user_preferences.schema.json",
"_comment": "Claude Code Audio Hooks - Default Configuration Template (v5.1.2)",
"_version": "5.1.2",
"_description": "This file is the default template for user_preferences.json. Plugin installs auto-copy this to ${CLAUDE_PLUGIN_DATA}/user_preferences.json on first read. AI agents should NOT edit this file directly β use 'audio-hooks set <key> <value>' instead.",
"version": "5.1.2",
"_comment_audio_theme": "Audio theme: 'default' for voice recordings, 'custom' for non-voice chimes. Change this one line to switch all audio.",
"audio_theme": "default",
"enabled_hooks": {
"_comment_notification": "Plays when Claude needs authorization or plan confirmation - HIGHLY RECOMMENDED",
"notification": true,
"_comment_stop": "Plays when Claude finishes responding - RECOMMENDED",
"stop": true,
"_comment_pretooluse": "Plays before Claude executes a tool (can be noisy) - OPTIONAL",
"pretooluse": false,
"_comment_posttooluse": "Plays after each tool execution (very noisy) - OPTIONAL",
"posttooluse": false,
"_comment_userpromptsubmit": "Plays when you submit a prompt - OPTIONAL",
"userpromptsubmit": false,
"_comment_subagent_stop": "Plays when subagent tasks complete - RECOMMENDED for heavy users",
"subagent_stop": true,
"_comment_precompact": "Plays before conversation history compaction - OPTIONAL",
"precompact": false,
"_comment_session_start": "Plays when Claude Code session starts - OPTIONAL",
"session_start": false,
"_comment_session_end": "Plays when Claude Code session ends - OPTIONAL",
"session_end": false,
"_comment_permission_request": "Plays when permission dialog appears ('Allow this bash command?') - HIGHLY RECOMMENDED",
"permission_request": true,
"_comment_posttoolusefailure": "Plays when a tool execution fails - OPTIONAL",
"posttoolusefailure": false,
"_comment_subagent_start": "Plays when a background subagent is spawned - OPTIONAL",
"subagent_start": false,
"_comment_teammate_idle": "Plays when an Agent Teams teammate goes idle - OPTIONAL",
"teammate_idle": false,
"_comment_task_completed": "Plays when an Agent Teams task is completed - OPTIONAL",
"task_completed": false,
"_comment_stop_failure": "Plays when API error occurs (rate limit, auth failure, etc.) - OPTIONAL",
"stop_failure": false,
"_comment_postcompact": "Plays after context compaction completes - OPTIONAL",
"postcompact": false,
"_comment_config_change": "Plays when configuration files change during session - OPTIONAL",
"config_change": false,
"_comment_instructions_loaded": "Plays when CLAUDE.md or rules files are loaded - OPTIONAL",
"instructions_loaded": false,
"_comment_worktree_create": "Plays when a worktree is created for isolated tasks - OPTIONAL",
"worktree_create": false,
"_comment_worktree_remove": "Plays when a worktree is removed/cleaned up - OPTIONAL",
"worktree_remove": false,
"_comment_elicitation": "Plays when an MCP server requests user input - RECOMMENDED",
"elicitation": false,
"_comment_elicitation_result": "Plays after user responds to an MCP elicitation - OPTIONAL",
"elicitation_result": false,
"_comment_permission_denied": "v5.0: Plays when auto mode classifier denies a tool call - RECOMMENDED",
"permission_denied": true,
"_comment_cwd_changed": "v5.0: Plays when working directory changes - OPTIONAL (noisy)",
"cwd_changed": false,
"_comment_file_changed": "v5.0: Plays when a watched file changes on disk - OPTIONAL (configure file_changed.watch)",
"file_changed": false,
"_comment_task_created": "v5.0: Plays when a task is created via TaskCreate - RECOMMENDED",
"task_created": true
},
"playback_settings": {
"_comment_queue": "Enable audio queue to prevent overlapping sounds",
"queue_enabled": true,
"_comment_max_queue": "Maximum number of audio notifications in queue",
"max_queue_size": 5,
"_comment_debounce": "Minimum milliseconds between same notification type (prevents spam)",
"debounce_ms": 500
},
"notification_settings": {
"_comment": "Desktop notification mode: audio_only, notification_only, audio_and_notification, disabled",
"mode": "audio_and_notification",
"show_context": true,
"_comment_detail": "Notification detail: 'minimal' (hook name only), 'standard' (tool + brief context), 'verbose' (full command text)",
"detail_level": "standard",
"_comment_per_hook": "Per-hook mode overrides. Omit a hook to use the global mode above.",
"per_hook": {}
},
"filters": {
"_comment": "Per-hook regex filters on stdin JSON fields. Suffix '_exclude' inverts. Example: posttoolusefailure: {\"tool_name\": \"Bash|Write\"}"
},
"webhook_settings": {
"_comment": "Send hook events to external services. Formats: slack, discord, teams, ntfy, raw",
"enabled": false,
"url": "",
"format": "raw",
"hook_types": ["stop", "notification", "permission_request", "posttoolusefailure", "stop_failure"],
"headers": {}
},
"focus_flow": {
"_comment": "Micro-task anti-distraction during Claude's thinking time. Modes: breathing, hydration, url, command, disabled",
"enabled": false,
"mode": "breathing",
"min_thinking_seconds": 15,
"url": "",
"command": "",
"breathing_pattern": "4-7-8"
},
"rate_limit_alerts": {
"_comment": "v5.0: Play a one-shot warning when stdin rate_limits cross thresholds. Marker-debounced per (window, threshold, resets_at).",
"enabled": true,
"five_hour_thresholds": [80, 95],
"seven_day_thresholds": [80, 95],
"audio": "notification-urgent.mp3"
},
"statusline_settings": {
"_comment": "Controls which segments appear in the Claude Code status line. Set visible_segments to an array of segment names to show only those. Empty array or omission shows all segments.",
"visible_segments": []
},
"tts_settings": {
"_comment": "Text-to-speech mode - speaks context-aware messages. Requires: macOS (say), Linux (espeak/spd-say), Windows (SAPI)",
"enabled": false,
"_comment_speak_assistant_message": "v5.0: When true, stop/subagent_stop hooks speak the actual last_assistant_message instead of the static message below. Off by default for privacy.",
"speak_assistant_message": false,
"assistant_message_max_chars": 200,
"messages": {
"stop": "Task completed",
"notification": "Attention, authorization needed",
"subagent_stop": "Background task finished",
"pretooluse": "Running tool",
"posttooluse": "Tool finished",
"permission_request": "Permission required",
"posttoolusefailure": "Tool execution failed",
"subagent_start": "Background task starting",
"teammate_idle": "Teammate is idle",
"task_completed": "Team task completed",
"stop_failure": "API error occurred",
"postcompact": "Context compaction complete",
"config_change": "Configuration changed",
"elicitation": "Input requested by MCP server",
"permission_denied": "Permission denied by classifier",
"cwd_changed": "Working directory changed",
"file_changed": "Watched file changed",
"task_created": "Task created"
}
},
"_usage_notes": [
"1. RECOMMENDED CONFIGURATION: Enable 'notification', 'stop', and 'subagent_stop'",
"2. Enable 'pretooluse' only if you want notifications before EVERY tool execution",
"3. 'posttooluse' is very noisy - enable only for debugging",
"4. To disable a notification, set its value to false in enabled_hooks",
"5. To use custom audio, place MP3 files in audio/custom/ and update paths",
"6. Audio files should be 1-3 seconds long for best experience",
"7. Run 'scripts/configure.sh' for interactive configuration",
"8. Run 'scripts/test-audio.sh' to test all enabled notifications",
"9. notification_settings.mode controls audio vs desktop notifications vs both",
"10. tts_settings.enabled activates text-to-speech announcements"
]
}