[BUG] set_session_title reports success but the rename never persists for idle sessions (desktop app)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Environment
- Claude Code 2.1.216, macOS desktop app (Darwin 27.0.0)
- Model: claude-fable-5
- Built-in session-management MCP (
mcp__ccd_session_mgmt__*)
Summary
set_session_title returns a success message but the rename never persists when the target is an idle (isRunning: false) session. Verified three ways: re-reading via get_session, re-reading via list_sessions (title unchanged in both), and visually in the desktop-app sidebar (no change).
Repro
- In a desktop-app session, call
list_sessionsand pick any idle session with an auto-generated title. - Call
set_session_titlewith that sessionId and a new title.
→ Tool returns: Renamed session local_… to "New Title". (If the user had renamed it themselves, their title is kept.)
- Call
get_sessionfor the same sessionId.
→ title is still the old value. list_sessions agrees, and the sidebar never updates.
Reproduced 9/9 across nine different idle local sessions on 2026-08-07. Several targets had clearly auto-generated titles, so the "user renamed it themselves" carve-out in the success message does not explain the no-op.
Expected
Either the title actually changes, or the tool returns an error (or an accurate "kept the user's title" notice) instead of unconditional success. Silent success makes agents report renames that never happened.
Notes
- Not tested against running (
isRunning: true) targets. - Renaming the current session is separately rejected by design (
Session … not found) — that part matches the tool's documentation and is not this report. - Related but distinct: #84587 (claude.ai/code exposes no session-metadata tools at all), #84041 (current-session rename restriction).
What Should Happen?
The rename should persist: get_session / list_sessions should return the new title and the sidebar should update. If the platform intends to keep a user-set title (or can't rename an idle session), the tool should say so in its result instead of returning unconditional success — silent success makes agents report renames that never happened.
Error Messages/Logs
Call: mcp__ccd_session_mgmt__set_session_title {"session_id": "local_02af875e-…", "title": "Paul Visokey"}
Result: Renamed session local_02af875e-… to "Paul Visokey". (If the user had renamed it themselves, their title is kept.)
Immediately after — call: mcp__ccd_session_mgmt__get_session {"session_id": "local_02af875e-…"}
Result: { "sessionId": "local_02af875e-…", "title": "Paul LinkedIn DM integration", "isRunning": false, … } ← title unchanged
Same pattern on 9/9 idle sessions; sidebar confirmed unchanged as well.
Steps to Reproduce
- Open the Claude Code macOS desktop app with at least two sessions in the sidebar.
- In session A, call
mcp__ccd_session_mgmt__list_sessionsand pick any OTHER session B that is idle (isRunning: false) — an auto-generated title makes the result unambiguous. - Call
mcp__ccd_session_mgmt__set_session_titlewith B'ssessionIdand any new title.
→ Returns success: Renamed session <id> to "<new title>". (If the user had renamed it themselves, their title is kept.)
- Call
mcp__ccd_session_mgmt__get_sessionwith B'ssessionId(or re-runlist_sessions).
→ title is still the old value; the sidebar never updates either.
Reproduced 9/9 on 2026-08-07 across nine different idle local sessions, including several whose titles were clearly auto-generated (so the "user renamed it themselves" carve-out cannot explain it).
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.216 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Terminal/Shell is set to "Other" because this is the Claude Code macOS desktop app (CCD), not a terminal — the ccd_session_mgmt MCP server these tools belong to only exists there. Happy to run any diagnostic from inside a session if that helps.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗