Skip to content
cccskills
FreePublished on GitHub

claude-sessions-sync

Sync Claude Code session records between two Anthropic accounts in the Claude desktop app on macOS. Use when switching accounts (for example when one hits usage limits) and old sessions disappear from the picker, or to mirror records before/after a switch.

The English summary is being prepared. Showing the original description.

See how to install

Files included (3)

  • SKILL.md4.0 KB
  • README.md1.2 KB
  • README.ru.md1.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Claude sessions sync (between desktop-app accounts)

How it works (verified 2026-10-01…07, Claude Code 2.1.286, macOS):

  • Session records live in ~/Library/Application Support/Claude/claude-code-sessions/<accountUuid>/<orgUuid>/local_*.json. The second path level is the organization UUID; the app lists only the current account+org pair, which is why switching accounts hides the other side's sessions.
  • Transcripts live in ~/.claude/projects/ and are shared across all accounts — never touch them. A record points at its transcript through the cliSessionId field.
  • Active account: ~/Library/Application Support/Claude/config.json → lastKnownAccountUuid. The active org folder is the one holding the freshest record (mtime).
  • Account switches may leave empty race folders <old-account>/<new-org> — ignore them.

Procedure

  1. The app must be fully closed: pgrep -f "/Applications/Claude.app/Contents/MacOS" is empty; otherwise osascript -e 'quit app "Claude"' and wait. Copying while the app is alive can be rolled back by its in-memory list cache (LSS-cached-sessions) and record rewrites.
  2. Identify both working folders: under each account UUID take the subfolder with the most local_*.json records (or the freshest one).
  3. Run a bidirectional newest-wins sync of local_*.json — the script below. A one-way copy leaves drift: sessions you continued on one side go stale on the other.
  4. Merge archived-sessions.idx: union the archived lists of both folders, write the same file into both.
  5. Copy missing deleted_* markers in both directions, otherwise deleted sessions resurrect in the picker.
  6. Do NOT sync scheduled-tasks.json or backlog/ — each account+org pair keeps its own.
  7. Reopen the app, switch the login to the target account, verify the record count in the picker.

Script (edit FIRST/SECOND, app closed)

import os, json, shutil

SESS = os.path.expanduser("~/Library/Application Support/Claude/claude-code-sessions")
FIRST  = f"{SESS}/<account-uuid-1>/<org-uuid-1>"
SECOND = f"{SESS}/<account-uuid-2>/<org-uuid-2>"

def records(d):
    return {f: os.path.getmtime(os.path.join(d, f))
            for f in os.listdir(d) if f.startswith("local_") and f.endswith(".json")}

f_rec, s_rec = records(FIRST), records(SECOND)
for f, m in s_rec.items():
    if f not in f_rec or m > f_rec[f]:
        shutil.copy2(os.path.join(SECOND, f), os.path.join(FIRST, f))
for f, m in f_rec.items():
    if f not in s_rec or m > s_rec[f]:
        shutil.copy2(os.path.join(FIRST, f), os.path.join(SECOND, f))

arch = set()
for d in (FIRST, SECOND):
    p = os.path.join(d, "archived-sessions.idx")
    if os.path.exists(p):
        try: arch |= set(json.load(open(p)).get("archived", []))
        except Exception: pass
idx = {"v": 1, "archived": sorted(arch)}
for d in (FIRST, SECOND):
    json.dump(idx, open(os.path.join(d, "archived-sessions.idx"), "w"))

for a, b in ((FIRST, SECOND), (SECOND, FIRST)):
    for f in os.listdir(a):
        if f.startswith("deleted_") and not os.path.exists(os.path.join(b, f)):
            shutil.copy2(os.path.join(a, f), os.path.join(b, f))

Gotchas

  • Claude Code cleans old transcripts (about a month back by default): such records return to the picker but open empty. There is nothing to restore from.
  • Copies drift apart while you work on one account — rerun the sync on every switch.
  • Continuing a moved session sends its transcript to the current account (privacy note for personal-vs-work orgs).
  • There is no official cross-account migration (anthropics/claude-code#48511 closed as not planned); terminal claude --resume <id> sees all local sessions under any login.

Background write-up: https://sereja.tech/blog/claude-code-sessions-between-accounts/

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Orchestrate iterative visual style searches with branch prompts, decision graphs, feedback loops, and final direction selection.

The English summary is being prepared. Showing the original description.

serejaris/personal-corp-os232Updated Oct 21, 2026

Audits the agent rules in the current folder (AGENTS.md, nested AGENTS.md files) and the skill descriptions the agent sees at start, then reports what to cut, move or rewrite and edits only after the user says yes. Use on «аудит правил», «проверь AGENTS.md», «почему агент не слушается правил», «проверь скиллы».

The English summary is being prepared. Showing the original description.

serejaris/personal-corp-os232Updated Oct 21, 2026

avatar

Free

Робот агента Personal Corp. Агент делает себе голову робота из набора деталей, хранит её в штабе в stack/avatars.json и кладёт в штаб страницу avatar/robot.html, где робот стоит за партой своего штаба и вокруг видны отделы, без сервера и интернета. На уроке по ссылке входа с экрана урока робот входит в живой класс и горит маячком, пока агент работает. Триггеры /avatar, /avatar <ссылка входа>, сделай себе аватар, покажи своего робота, приди на урок.

The English summary is being prepared. Showing the original description.

serejaris/personal-corp-os232Updated Oct 21, 2026

Use when choosing between engines or models for an agent pipeline and the answer must come from measurement on your own data, not from marketing pages: speech recognition for meeting recordings, the model that turns a transcript into notes, the critic model that checks it. Runs every variant in an isolated container, measures time, cost per hour of input (USD and RUB, with price source and date) and quality (WER/CER and course terms for ASR; code checks plus a judge of a different model for LLM steps), writes results.json/csv and one static analytics page. Triggers on "бенчмарк", "сравни движки", "сколько стоит час записи", "какую модель взять для пайплайна", "benchmark the pipeline", "compare ASR engines".

The English summary is being prepared. Showing the original description.

serejaris/personal-corp-os232Updated Oct 21, 2026

Use when user asks for Claude Code usage stats, weekly analytics, project activity summary, or wants to see what projects were worked on. Triggers on "аналитика", "статистика claude", "cc stats", "weekly report", "что делал"

The English summary is being prepared. Showing the original description.

serejaris/personal-corp-os232Updated Oct 21, 2026

Use when needing strategic project analysis from multiple independent expert perspectives. Triggers on business decisions, growth strategy, product direction, competitive analysis, or any situation where diverse C-level opinions reduce blind spots

The English summary is being prepared. Showing the original description.

serejaris/personal-corp-os232Updated Oct 21, 2026

See all skills by serejaris

Report a problem with this skill