# Upgrade Guide — v0.17.5

<!-- bump: patch -->

## What Changed

### Intelligence Provider Context Isolation

The `ClaudeCliIntelligenceProvider` (used for MessageSentinel classification, InputGuard coherence checks, and other internal LLM evaluations) now runs with `--setting-sources user`, preventing project-level CLAUDE.md and local settings from contaminating classification prompts.

**Before**: `claude -p "classify this message..."` would load the agent's full identity prompt (CLAUDE.md, hooks, etc.). The LLM would sometimes treat the classification request as a conversation, returning paragraphs of identity-confused text instead of a single classification word.

**After**: Classification calls are isolated from project context. The LLM receives only the classification prompt and responds with the expected single-word category.

### Sentinel Reason Sanitization

When the MessageSentinel's LLM classification returns an unparseable response, the raw LLM output is no longer dumped to Telegram. Instead, a clean generic message is shown ("Pause signal detected." or "Emergency stop signal detected.").

**Before**: Users would see confusing messages like `Session paused. LLM response unparseable: "You're right. I've been operating without proper grounding..."` — which looked like the agent having an identity crisis in public.

**After**: Unparseable classification responses are logged server-side but never shown to users.

## What to Tell Your User

- **"Fixed a bug where the agent could post confusing messages when pausing sessions."** Sometimes internal classification errors would leak raw text to Telegram — that's cleaned up now.

## Summary of New Capabilities

| Capability | How to Use |
|-----------|-----------|
| Context-isolated intelligence calls | Automatic — CLI evaluations no longer inherit project CLAUDE.md |
| Sanitized sentinel messages | Automatic — unparseable classifications show clean messages |
