[0.19.5] - 2026-09-05
Fixed
claude.tsemitted--messaging-socket-pathbefore--plugin-diron the crew launch command, truncating cmux's stored argv and breaking role classification/restore (#759). cmux <=0.64.18 truncateslaunchCommand.argumentsat--messaging-socket-pathwhen storing it inclaude-hook-sessions.json, so anything appended after it — including--plugin-dir— was dropped from the stored command; the flag actually reached the live Claude process fine, but the truncated stored argv is what cmux's role classification/session-restore reads. The flag is now appended at the end of the command, matching the ordering the launch-cmd path (#697) already used.
Added
- PermissionRequest registered as a hook source + Notification reclassified by
notification_type(#760).PermissionRequestfires ~6s before the matchingNotificationand carriestool_name/tool_inputdirectly — a richer, earliertask.blockedsource than sniffingNotification.message. Added to the managed hook set (#615) and the crew's own per-session hook set, via a newformatPermissionRequestQuestionhelper that never dumps fulltool_input(only a short, truncated file-path/command hint).Notificationis now classified by the structurednotification_typefield (a 14-value enum on current Claude clients) instead of English substring matching; the old substring test is kept only as a fallback for clients that omit the field. - Stop hook's
prompt_idthreaded through as the real per-turnturnId(#761).Stop/PermissionRequest/Notificationpayloads all carryprompt_id, a UUID that matches across events of the same turn (verified live, claude 2.1.260).mapClaudeHookToEventnow uses it asturnIdinstead of the constant"hook-stop", falling back to the constant when absent (older clients). - Stop now vetoes turn-completion on active
background_tasks/session_crons(#762). These are a structural, agent-reported veto on turn-completion, stronger than the #492pendingToolveto because they also cover Claude's own background tasks and session crons, whichpendingToolcannot see. When either is non-empty,Stopmaps totask.progressinstead oftask.turn.completed; the existing trailing-question detection still takes priority. - New
StopFailurehook source for API-error turn deaths (#763). Previously a crew turn that died on an API error (529/overload/etc) was invisible until the watchdog reported a plain stall — the wrong story.StopFailureis now registered in the managed hook set (#615) and the crew's own per-session hook set, mapped to a newControlEventvarianttask.turn.failedcarrying the resolvedturnIdand a redacted error string.task.turn.failedis deliberately nottask.failed(anti-#2576: no hook may terminalize a task).
Together, #760–#763 add two new entries to the squadrant-owned hook set installed into ~/.claude/settings.json (PermissionRequest, StopFailure); Notification and Stop were already registered, only their in-code classification changed. Both new entries are written on the next daemon boot via installClaudeHooks, not on npm install.