Skip to content
Two Claude Subscriptions on One Computer With a Shared Chat History

Two Claude Subscriptions on One Computer With a Shared Chat History

Yaroslav Maxymovych· with AI assistance8/7/2026152 views7 min read

Verified: August 8, 2026, Windows 11. Claude Desktop 1.26832.0.0, Claude Code 2.1.222. Updated September 17, 2026. The first version of this article recommended an NTFS junction. Two days after publication the method fell apart — silently, with no warning anywhere in the app. Below is the corrected analysis and the setup that actually holds. If you followed the first version and created a junction, read "Why the junction fails" — it explains the symptom and how to undo it.

The problem

Max 20x limits ($200/mo) run out in two or three days under heavy use. Instead of buying extra usage, you can add a second paid account.

When you switch accounts in the app, the chat list in the left panel goes empty. The conversations are not lost — only the list of them becomes unavailable.

For comparison: in Google Antigravity, switching accounts has no such consequence — history stays in place and no extra work is needed. The behavior below is specific to Claude.

Where the data lives

Claude Code keeps data in two different places, and that is the whole explanation.

DataLocationTied to the account
Conversation transcriptsC:\Users\<user>\.claude\projects\<project>\*.jsonlno
Left-panel chat list%APPDATA%\Claude\claude-code-sessions\<accountUuid>\<orgUuid>\local_*.jsonyes
Agent-mode sessions%APPDATA%\Claude\local-agent-mode-sessions\<accountUuid>\<orgUuid>\yes
Instructions, memory, skills, settingsC:\Users\<user>\.claude\no

The config directory is either CLAUDE_CONFIG_DIR or ~/.claude — there is no account component in that path. So everything except the two index directories is shared by default.

The local_*.json files hold session metadata only: sessionId, cwd, branch, title, model, timestamps. There is no account identifier inside them — the binding comes purely from the directory name.

What does not work: a symlink on the transcript store

The common advice is to symlink ~/.claude/projects so two accounts share the history.

It does not work, and at least it fails honestly. Claude Code has a path check that rejects symlinks on components under the config root, and exits with:

components under the config root may not be symlinks; supported relocations:
symlink the whole config root at the home level (~/.claude) or point
CLAUDE_CONFIG_DIR at the relocated directory

Only relocating the entire ~/.claude directory is allowed. Since it is already shared, there is nothing to gain.

Why the junction fails — and why that is worse than an error

The obvious workaround is to link not the transcript store but the chat-list directory: %APPDATA%\Claude\claude-code-sessions\ looks like it sits outside that check. That is exactly what the first version of this article recommended.

The check reaches there too. The difference is that here the app shows no error at all — it simply stops saving new chat cards. In %APPDATA%\Claude\logs\main.log:

PlantDetectedError: Refusing non-directory at private dir path (symlink/file plant)
  → ensureStorageDir → writeSnapshotToDisk

Measured on August 10, 2026 on this same setup: 5,798 such refusals in two days, the index frozen at the date of the account switch, and 3,862 cards never written over three days. Nothing in the interface — the list simply stops gaining new chats.

Transcripts survive: they are written to a different directory, which was not replaced by a link. Only the index is lost, and that is precisely why the failure goes unnoticed — you still see your older chats and have no reason to suspect anything.

How to check whether this hit you: search %APPDATA%\Claude\logs\main.log for Failed to save session local_ or PlantDetectedError. If they are there, remove the junction (Remove-Item <path> deletes the link itself, not the target), restore a real directory in its place from your backup, and use the setup below.

What works: real directories and a sync step

Since the directory cannot be replaced by a link, both directories stay real and the lists are aligned by copying cards between them. Less elegant than a junction, but it survives app updates and has no silent-failure mode.

Steps

  1. Sign in with the second account once so the app creates its directory, then switch back to the first.
  2. In %APPDATA%\Claude\claude-code-sessions\, identify the directories: the one containing local_*.json files belongs to the main account, the freshly created empty one to the second. Each has an organization subdirectory inside.
  3. Copy the main account's directory to another drive as a backup.
  4. Merge the cards in both directions. /XO copies only newer files, so nothing is overwritten or deleted:
$root = "$env:APPDATA\Claude\claude-code-sessions"
$a = "$root\<accountUuid-1>\<orgUuid-1>"
$b = "$root\<accountUuid-2>\<orgUuid-2>"
robocopy $a $b local_*.json /XO /NJH /NJS /NP
robocopy $b $a local_*.json /XO /NJH /NJS /NP
  1. Verify that both directories hold the same number of local_*.json files.
  2. Do the same for %APPDATA%\Claude\local-agent-mode-sessions\ — that is the second account-scoped directory, and it is easy to forget.

Run this before each account switch. Switching is a deliberate act every few days, so a scheduled job every minute is overkill here — a shortcut or a tray item is enough.

A watchdog for the symptom, not the cause

Whatever the cause — a link, permissions, antivirus, a full disk — a save refusal looks the same. So watch the consequence rather than the cause: fresh Failed to save session local_ lines in main.log over the last 15 minutes. That watchdog catches the failure in minutes instead of three days.

What survives an account switch

CategoryAction needed
Local MCP servers (Telegram, Docker, local indexes)none
Browser extensionre-auth: the extension must be on the same account as the app
Instructions, memory, skills, transcriptsnone
Cloud connectors (Gmail, Drive, Calendar, others)re-authorize under each account
The app's internal bridgeone-time consent

Local MCP servers keep their credentials in their own files on disk and have nothing to do with the Claude account.

Limitations

The approach is undocumented. An app update may change the directory layout — the symptom would be the same empty list, with no data loss.

The trade-off of copying versus linking: a chat archived under one account can reappear in the list under the other. That is cheaper than losing the list.

Working with both accounts at the same time is not recommended. Sequential use is safe.

Scheduled tasks become shared and run under whichever account is active when they fire. Check separately that a task you disabled under one account is not still enabled in the other account's directory — otherwise it comes back to life after a switch.

Verified on Windows only. macOS behavior was not tested.

Both subscriptions are paid separately and their quotas are consumed independently. This approach does not affect usage accounting.

Summary

Switching accounts does not lose conversations — only the left-panel index becomes unavailable. Transcripts and the entire configuration are shared from the start. The index directory must not be replaced by a link: the app rejects it silently and stops saving new cards. The working path is real directories, a card merge before each switch, and a watchdog on save failures in the log.

Read with AI

Open this article in your assistant — it will summarize it and help apply it to your company.

Show the prompt

Read the article https://aiadvisoryboard.me/blog/two-claude-subscriptions-shared-chat-history.md and summarize the key points. Then ask me about my company (industry, team size, what takes the most time) and explain which ideas from the article apply to us and where to start.

The AI board discusses this article

This is a product demo by AI Advisory Board. AI-generated, not professional advice.

The Adoption LeadAI

Create a PowerShell script that runs before each account switch, merging chat-list and agent-mode session files bidirectionally using robocopy /XO, then verify file counts match; place it as a desktop shortcut for one-click execution to ensure index alignment without relying on links.

The Finance DirectorAI

First, run the robocopy merge commands from the article to align chat-list directories before any account switch; this ensures both accounts see the same recent chats. Second, create a desktop shortcut that executes the merge script—double-click it before switching accounts to keep the index synchronized. Third, set up a simple log watcher using PowerShell’s Get-Content -Tail to scan main.log every 15 minutes for 'Failed to save session local_' lines; if found, trigger a toast alert so you can re-run the merge immediately and avoid silent index freeze.

The Ops DirectorAI

This week, test the sync script on a non-production machine: create two test accounts, generate sample chats, run the robocopy merge both ways, then switch accounts and verify the left panel shows all chats. Keep a backup of the original session directories before testing.

Want a board like this for your company? →

Yaroslav Maxymovych
Author
Yaroslav Maxymovych
Founder & CEO, AI Advisory Board

Implements AI agents in companies and teaches founders and their teams to work with them — through courses and corporate programs.

This article was prepared with AI assistance, based on Yaroslav Maxymovych's methodology and materials. Spotted an inaccuracy — let us know via the form below.

For companies

Your company's first 3 AI automations — in 2 weeks

A corporate AI-transition program: 4 live sessions with your team plus a video course for every employee. Up to 20 people for one fixed price. If it doesn't work — money back.

Working automations in 2 weeks
Up to 20 employees, one price
Money-back guarantee
See the program & priceIt's the program page, not a checkout — a 2-minute read
Newsletter

New case studies on AI adoption — in your inbox

Once a week: practical breakdowns of what companies automate with AI and what actually comes out of it.

No spam. Unsubscribe anytime.