AISE events reference
AISE (AI Sound Events) is the canonical vocabulary every pack maps its sounds against. Pack authors target AISE; tool installers translate AISE into the native hook names of each tool.
Only task_complete is required in a pack — every other event is optional.
All AISE events
Events are grouped by category. The Required column shows whether a pack must include a sound for that event (only task_complete is mandatory).
Agent
| Event | Required | Description |
|---|---|---|
task_complete | Yes | Agent finished the current task successfully |
task_failed | Agent stopped with an error or was aborted | |
subtask_complete | A subtask within a larger task finished | |
subtask_failed | A subtask within a larger task failed |
User interaction
| Event | Required | Description |
|---|---|---|
prompt_sent | The user submitted a prompt | |
approval_needed | The agent is requesting user permission | |
approval_granted | The user approved a request | |
approval_denied | The user denied a request |
Processing
| Event | Required | Description |
|---|---|---|
thinking_start | The agent began reasoning | |
thinking_end | The agent finished reasoning | |
tool_called | The agent invoked a tool | |
tool_complete | A tool invocation finished |
File system
| Event | Required | Description |
|---|---|---|
file_created | A file was created | |
file_modified | A file was modified | |
file_deleted | A file was deleted |
Session
| Event | Required | Description |
|---|---|---|
session_start | A new agent session started | |
session_end | An agent session ended | |
session_error | An agent session crashed |
Special
| Event | Required | Description |
|---|---|---|
notification | A generic notification | |
warning | A non-fatal warning | |
celebration | A milestone or celebration |
All sounds must be ≤ 10 seconds long. The loop flag is forbidden except optionally on thinking_start.
Tool mappings
Not every tool exposes every AISE event. The CLI only writes hooks for the events a tool actually supports.
Cursor
Hooks live in .cursor/hooks.json (project) or ~/.cursor/hooks.json (global). Cursor multiplexes both task results into the single stop hook with a status field.
| AISE event | Cursor hook |
|---|---|
task_complete | stop when status=completed |
task_failed | stop when status=error or status=aborted |
prompt_sent | beforeSubmitPrompt |
tool_called | preToolUse |
session_start | sessionStart |
Claude Code
Hooks live under hooks in .claude/settings.json (project) or ~/.claude/settings.json (global). Claude Code uses separate hooks for success vs failure.
| AISE event | Claude Code hook |
|---|---|
task_complete | Stop |
task_failed | StopFailure |
session_start | SessionStart |
session_end | SessionEnd |
prompt_sent | UserPromptSubmit |
approval_needed | PermissionRequest |
notification | Notification |
VS Code (planned)
| AISE event | VS Code hook |
|---|---|
task_complete | onChatResponseComplete |
prompt_sent | onChatRequestSent |
tool_called | onToolInvocation |
Windsurf, Aider (planned)
These installers are stubs today and will be filled in as the integrations mature.
How a pack maps events
Pack manifests use AISE keys directly. Example fragment of a aisounds.json:
{
"sounds": {
"task_complete": {
"file": "sounds/task_complete.ogg",
"file_fallback": "sounds/task_complete.mp3",
"duration_ms": 1200,
"loop": false
},
"task_failed": {
"file": "sounds/task_failed.ogg",
"file_fallback": "sounds/task_failed.mp3",
"duration_ms": 1800,
"loop": false
}
}
}
The CLI never asks you which tool hook to wire each sound to — the AISE → tool mappings above are applied automatically based on the --tool flag.