feat(plugin): add SubagentStop hook to auto-check inbox after subagent runs

Delivers peer messages that arrive during a long-running subagent into the
parent context the moment the Task tool returns, instead of waiting until
the next user prompt. Reuses the existing `claude-mailbox check --hook` so
the mailbox identity stays consistent with UserPromptSubmit.

Plugin 1.2.0 → 1.3.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Mika Kuns
2026-05-19 16:06:55 +02:00
parent d456f29138
commit 8747d638fb
3 changed files with 14 additions and 3 deletions

View File

@@ -1,7 +1,7 @@
{ {
"name": "claude-mailbox", "name": "claude-mailbox",
"version": "1.2.0", "version": "1.3.0",
"description": "Auto-checks the local Claude-Mailbox daemon before every prompt and injects pending messages into the conversation context.", "description": "Auto-checks the local Claude-Mailbox daemon before every prompt and after each subagent run, and injects pending messages into the conversation context.",
"author": { "author": {
"name": "Mika Kuns" "name": "Mika Kuns"
}, },

View File

@@ -39,8 +39,9 @@ The `SessionStart` hook announces the current session's mailbox name in the conv
|---|---|---| |---|---|---|
| `SessionStart` | `claude-mailbox session-announce` | Registers the session with the daemon, then prints (a) this session's mailbox name, (b) the exact `from` / `name` args to pass to MCP tools, and (c) a list of other mailboxes active in the last hour — so Claude knows who's around without needing to call `list_mailboxes` first. | | `SessionStart` | `claude-mailbox session-announce` | Registers the session with the daemon, then prints (a) this session's mailbox name, (b) the exact `from` / `name` args to pass to MCP tools, and (c) a list of other mailboxes active in the last hour — so Claude knows who's around without needing to call `list_mailboxes` first. |
| `UserPromptSubmit` | `claude-mailbox check --hook` | Pulls unread messages for the session's mailbox and injects them as context. Silent on empty inbox; emits a one-line setup hint when the daemon is unreachable. | | `UserPromptSubmit` | `claude-mailbox check --hook` | Pulls unread messages for the session's mailbox and injects them as context. Silent on empty inbox; emits a one-line setup hint when the daemon is unreachable. |
| `SubagentStop` | `claude-mailbox check --hook` | Same as `UserPromptSubmit`, but fires when a subagent finishes (Task tool). Lets the parent see peer messages that arrived during a long-running subagent run, instead of waiting until the next user prompt. |
Cost: one local HTTP round-trip per prompt + Node coldstart (~100ms on Windows). Cost: one local HTTP round-trip per prompt and per subagent stop + Node coldstart (~100ms on Windows).
## MCP tools ## MCP tools

View File

@@ -19,6 +19,16 @@
} }
] ]
} }
],
"SubagentStop": [
{
"hooks": [
{
"type": "command",
"command": "claude-mailbox check --hook"
}
]
}
] ]
} }
} }