Running `/compact` rendered a `/compact` user-message bubble during the live session, but that text is never sent to the model as an ordinary user turn — it triggers a built-in compaction that produces its own "Context compacted" entry. Showing the bubble was misleading (it implied the model received `/compact`), and it was also inconsistent: after a reload the bubble vanished, since the persisted thread only carries an empty marker. This changes the direction so native slash commands are never echoed as user messages at all, live or after reload. `AcpThread` gains a `send_command` path that runs the turn (so the agent still receives and handles `/compact`) without pushing a user-message entry or capturing a git checkpoint. In the UI, `leading_native_command` now matches a native command whether or not it has trailing text, so both `/compact` and `/compact do X` route through the command path; the queued-message path detects native commands too, so a `/compact` typed while a turn is generating behaves the same. MCP/ACP commands are unaffected and still render as normal user messages, since their text is a real argument the agent consumes. Release Notes: - N/A --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
2 files changedLine totals unavailable