Quitting now settles pending peer messages as expired so the sending session gets a definite answer.
What's wrong with this entry?
When Claude Code exits, peer messages that were being held in the cross-session inbound queue are answered as expired instead of being abandoned, so the sending session gets a definite result.
- A shutdown hook drains the hold buffer and settles every still-held peer message with an
expiredstatus, logging how many were settled - The drain is raced against a grace period of up to 750 ms before shutdown continues
- Once shutdown has begun, a late peer message is refused rather than parked, recording peer_inbound_gate / shutdown_expired telemetry
- Unix-socket messaging server teardown now also destroys open connections and unlinks the socket file before awaiting the drain
- A new lookup lets the headless expiry path read a message's hold cause
[cross-session-inbound] shutdown: settling ${e.length} still-held peer message(s) as expired, shutdown: settling , [cross-session-inbound] shutdown: not parking a late peer message \u2014 settled as expired:
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.234
Messages injected by a host are classified separately from peer messages
Both mention cross
-
v2.1.234
Cross-session control requests check ids more carefully
Both mention cross
-
v2.1.234
Notice acks now wait for the record to persist
Both mention cross