[BUG] Cowork projects still lost on update in v1.28929.0 — same migration bug as #29373 / #35131 / #49276, all closed without a fix

Status Closed — duplicate
Reported on v2.1.107
Maintainer reply None cached
Activity 1 comment · opened Aug 13, 2026 · closed Aug 25, 2026

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?

This is the same Cowork/session migration failure reported in #29373 (v1.1.4498, marked stale), #35131 (v1.1.7053, closed as not planned), and #49276 (v1.2773.0, closed as duplicate of #35131). It is still present in v1.28929.0. Filing again because the bug was never fixed and it is still destroying users' project lists two major versions later.

Environment

  • Claude desktop 1.28929.0
  • Claude Code CLI 2.1.107
  • macOS 26.6.1 (25G76), Apple Silicon
  • Max plan

---

What happened

macOS 26.6.1 installed and rebooted the machine at 20:33 local. On relaunch, ~/Library/Application Support/Claude/local-agent-mode-sessions/ had a birth timestamp of 20:36:54 — it was recreated, not migrated in place:

$ stat -f '%SB birth  %Sm mod  %N' -t '%H:%M:%S' \
    "$HOME/Library/Application Support/Claude/local-agent-mode-sessions"
20:36:54 birth 20:36:54 mod  .../local-agent-mode-sessions

The Cowork project list was empty. Every project binding gone from the UI.

The data is intact on disk — the app just won't read it

Exactly as described in #35131. ~/Library/Application Support/Claude/claude-code-sessions/<account>/<org>/ contains 104 local_*.json session records, each with sessionId, cwd, originCwd, createdAt, lastActivityAt, title, model, isArchived.

Reconstructing from those files recovers the complete project list: 104 sessions across 37 distinct working directories, spanning 2026-01 through 2026-08-12 — including sessions from earlier the same day. All 37 folders still exist on disk, untouched.

So this is not data loss at the filesystem layer. It is the migration failing to populate whatever index the UI reads from — the identical root cause #35131 documented in detail and which was closed as not planned.

Recovery attempts

Everything listed in #35131 was already tried there and failed: full quit and relaunch, clearing Electron caches, clearing IndexedDB / Local Storage / Session Storage to force a rebuild. There is no server-side copy to fall back on — /api/organizations/{org}/cowork_projects returns 404, so nothing about Cowork projects is stored server-side.

There is no supported path to get the project list back. The user must recreate every project by hand.

Compounding issue — silent 30-day transcript deletion

Separately, ninety minutes earlier at 19:12, Claude Code's cleanupPeriodDays default of 30 ran on app launch and deleted local session transcripts older than the cutoff.

~/.claude/.last-cleanup records the run, and every affected directory under ~/.claude/projects/ carries an identical mtime of Aug 12 19:12. The boundary is exactly 30 days:

| Newest content in folder | Age at cleanup | Result |
|---|---|---|
| Aug 10 | 1 day | survived |
| Aug 8 | 4 days | survived |
| Jul 16 | 27 days | survived |
| Jul 11 | 32 days | deleted |
| Jul 7 | 36 days | deleted |
| Jun 28 | 45 days | deleted |
| May 19 | 85 days | deleted |

~16 project folders emptied. No prompt before, no notification after, no trash — the files are unlinked. Combined with the migration bug, a user who loses their project list on the same day also finds the older transcripts behind those projects already destroyed.

Requested

  1. Fix the migration. It has now broken across four reported versions. Have the session loader read local_*.json from claude-code-sessions/<account>/<org>/ on startup and rebuild the index, rather than only copying files between directories.
  2. Reopen #35131. Closing it as not planned left the bug live; this is the fourth report of the same failure.
  3. Ship a recovery path. The 104 session records contain everything needed to rebuild the project list. A "rebuild project index from disk" action would have made tonight a non-event.
  4. Make retention opt-in. Do not silently delete user transcripts on a default. Prompt first, notify after, and use trash rather than unlink.
  5. Surface cleanupPeriodDays in the UI. Users do not know it exists until it has already run.

Note for anyone hitting this

Your project list is probably still recoverable as data, even though the UI shows nothing:

~/Library/Application Support/Claude/claude-code-sessions/<account>/<org>/*.json

Each file carries cwd and title. That is enough to reconstruct which projects existed and what folder each pointed at. And set this before your next launch, or the transcripts behind those projects go too:

// ~/.claude/settings.json
{ "cleanupPeriodDays": 36500 }

What Should Happen?

Cowork projects and their folder bindings should survive an OS update, reboot, and app relaunch. If the store is migrated, the migration must rebuild the index the UI reads from — not merely copy files between directories. When the index cannot be built, the app should fall back to reading local_*.json from claude-code-sessions/ rather than rendering an empty panel.

Session transcripts should never be deleted by a silent default. Retention should be opt-in, or prompt before the first run and notify afterward with a list of what was removed. Deleted transcripts should go to trash so there is a recovery window, and cleanupPeriodDays should be visible in the UI.

Error Messages/Logs

Steps to Reproduce

Cowork project loss (matches #29373 / #35131 / #49276):

  1. Have an established set of Cowork projects bound to local folders
  2. Install an OS update and reboot (macOS 26.6.1, reboot at 20:33)
  3. Relaunch Claude Desktop
  4. Observe the Cowork project list is empty
  5. Check the store's birth time:

stat -f '%SB birth %N' "$HOME/Library/Application Support/Claude/local-agent-mode-sessions"
If it is after your last reboot, the store was recreated rather than migrated.

  1. Confirm the data still exists:

ls ~/Library/Application\\ Support/Claude/claude-code-sessions/*/*/local_*.json | wc -l
In my case this returned 104 records, each with a valid cwd and title, while the UI showed nothing.

Silent transcript deletion (deterministic):

  1. Leave a project folder untouched for more than 30 days
  2. Leave cleanupPeriodDays unset in ~/.claude/settings.json (default 30)
  3. Launch the app
  4. Transcripts under ~/.claude/projects/<folder>/ are deleted — no prompt, no notification, no trash. ~/.claude/.last-cleanup updates to the launch time and every emptied directory carries that same mtime.

Verify the boundary by comparing folders either side of 30 days: mine at 27 days survived, 32 days did not.

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.107 (Claude Code) — Claude Desktop 1.28929.0

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗