# Upgrade Guide — v0.17.13

<!-- bump: patch -->

## What Changed

### Sentinel: Unparseable LLM Responses No Longer Disrupt Sessions

Two fixes to the MessageSentinel's handling of unparseable LLM classification responses:

1. **Default changed from "pause" to "pass-through"**: When the classification LLM returns a conversational response instead of a single category word, the sentinel now defaults to `normal` (pass-through) instead of `pause`. This prevents false session pauses caused by classification failures — if the classifier can't do its job, the result is unreliable and shouldn't disrupt the session.

2. **Sentinel reasons never shown to users**: Previously, a substring check (`includes('unparseable')`) was supposed to sanitize raw LLM responses before they reached Telegram. This check was bypassed in some environments. The fix removes reason text from user-facing messages entirely — reasons are logged server-side only. User messages now show clean text: "Session paused." or "Session terminated." without any internal classification details.

## What to Tell Your User

- **Cleaner session messages**: Your agent will no longer show confusing internal messages when pausing or stopping sessions. Messages are now short and clean.

## Summary of New Capabilities

| Capability | How to Use |
|-----------|-----------|
| Robust sentinel message sanitization | Automatic — internal reasons logged server-side, never shown to users |
| Pass-through on unparseable classification | Automatic — failed classifications no longer falsely pause sessions |
