All repos under a parent directory emptied to skeleton dirs during session resume; Claude-process provenance on residue; no session command responsible

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 1 comment · opened Jul 18, 2026

Title: All repos under a parent directory emptied to skeleton dirs during session resume;
Claude-process provenance on the residue; no session command responsible

Summary. On 2026-07-18 between 08:47 and 08:56 MDT, every git repository under
/Users/vikas/code (~20 repos) was reduced to skeleton directories: .git left with only
config + hooks/ (original timestamps), all objects/refs/HEAD/index and working files gone;
surviving structure limited to node_modules remnants, .vscode, .claude, and freshly created
.claude/.cc-writes markers. The window coincides exactly with multiple Claude Code sessions
resuming (SessionStart:resume) in the desktop app, including sessions anchored at the parent
directory and at one child repo.

Key evidence.

  • com.apple.provenance xattrs on the newly created skeleton dirs match files created by the

Claude process family on this machine (identical ID), and .cc-writes markers were created in
the damage window.

  • A sweep of every session transcript active in the window found no destructive command at any

scope broader than /tmp files — the deletion did not go through any session's Bash tool.

  • Ruled out independently: iCloud Drive (unused), third-party sync/cleaner apps (none installed),

macOS update (staged but never applied; no reboot since Jun 16), Time Machine (no accessible
backups; only OS snapshots).

  • Environment: macOS 26.5.1 (25F80), Claude desktop app 1.22209.0, Claude Code CLI ≥2.1.211-era,

sandbox enabled (macOS Seatbelt) with git */gh * in excludedCommands, auto mode default,
multiple concurrent local sessions + worktree usage. Notable app feature flags active:
coworkLocalSessionProjects, coworkRemoteSessionSpaces, coworkBranchSession.

Impact. Local-only data destroyed: git object stores (reflogs unrecoverable), gitignored env
files, any unpushed work. Pushed state recoverable by re-clone (done). No secrets exposed —
purely destructive.

Suspicion (unproven). Session-space / per-session-worktree provisioning at resume acting on
the real checkouts instead of an isolated copy — the survivor set resembles worktree-provisioning
artifacts (symlink-directory names, env-copy targets, write-tracking markers).

Asks. (1) Does resume-time session-space provisioning ever mutate the original project
directory? (2) What logs (app-side) would confirm/refute for this window? (3) If confirmed, a
guard: provisioning must never operate destructively on a directory containing a real .git
object store.

Available on request: full incident doc, timeline with mtimes, transcript-sweep script and
output, skeleton directory listings (53 preserved as *.incident-skeleton/).

View original on GitHub ↗

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