Skip to content
Currently available — for the right work·France903+ Day French Streak·2026 Q2 calendar — open now
YYC PAXEL · TECHNICAL·JUNE 2026

Paxel Was Missing Half My Sessions — Here's How I Fixed It

FK
Fauzul Kabir Chowdhury
Forward Deployed Engineer & Product Leader
National Martyrs Memorial of Bangladesh (Jatiyo Smritishoudho)

First and foremost, a massive thank you to the team behind YC Paxel. Paxel is a brilliant, state-of-the-art developer tool that compresses weeks of complex agentic CLI transcripts into a clean, highly visual story of developer momentum, badges, and shipping cycles.For builders pairing daily with AI coding assistants, having this telemetry is a total game-changer.

TL;DR

If you run Claude Code on WSL, Paxel only sees your WSL-side sessions. My Windows-side sessions were invisible — 39 sessions, 4 projects, gone. Symlinks don't work (Docker can't follow them). Copying the files does. My report went from 26 → 62 analyzed sessions and 41 → 150 hours of tracked work.

The Setup.

I use Claude Code across both WSL and Windows. Same machine, same repos — some sessions start from VS Code with Remote-WSL, others from Windows terminals. Claude Code stores transcripts in ~/.claude/projects/ on each side independently.

When I ran Paxel, it scanned ~/.claude/projects/ inside WSL and found 28 sessions across 9 projects. Seemed right — until I checked.

My Windows C:\\Users\\fauzu\\.claude\\projects\\ had 47 JSONL transcripts across 4 project directories that Paxel never saw.


Three Runs, Three Lessons.

Run 1 — Baseline (WSL only)

MetricValue
Sessions analyzed26
Projects9
Total time tracked41 hours
Lines shipped486,186
Commits326
Longest session8h 12m
Max concurrent agents2
Longest streak20 days
Prompts per session9 avg
AI badgesDances with Robots

This was only my WSL-side Claude Code sessions. Paxel had no idea about the Windows side.

Run 2 — Symlink Attempt (Failed)

I symlinked the Windows project dirs into WSL's ~/.claude/projects/:

ln -sf "/mnt/c/Users/fauzu/.claude/projects/C--Users-fauzu" \
       "$HOME/.claude/projects/C--Users-fauzu"

Result: Identical to Run 1. Same 28 sessions, same 26 analyzed. The symlinks were invisible to Paxel because:

  1. Paxel's count_sessions() uses find without -L — it doesn't traverse symlinked directories.
  2. Docker bind-mounts ~/.claude/projects/ into the container, but symlinks pointing to /mnt/c/... are broken inside Docker (that path doesn't exist in the container environment).

Run 3 — Copy Fix (Worked)

Removed the symlinks, copied the Windows project directories into WSL instead:

cp -R /mnt/c/Users/fauzu/.claude/projects/*/ ~/.claude/projects/
Sessions Analyzed
62

A massive 138% increase from the WSL-only run (baseline: 26).

Time Tracked
150 hrs

A 266% spike showing the true work completed (baseline: 41h).

Decision Points
93

Deep AI context paths captured for YC scoring (baseline: 33).

MetricRun 1 (Baseline)Run 3 (Copy Fix)Delta
Sessions analyzed2662+138%
Projects913+4
Total time tracked41 hrs150 hrs+266%
Longest session8h 12m10h 30m+2h 18m
Max concurrent agents24+2
Prompts per session9 avg12 avg+33%
Decision points tracked3393+182%
AI badges12+1 (Cognitive Breadth)
"Continue from where you left off"7× across 5 sessions37× across 23 sessions

The narrative changed too — Run 1 focused heavily on production deployment. Run 3 surfaced the full picture: portfolio sites, export business websites, resume workflows, webhook prototypes, n8n pipelines, and more. Paxel could finally see the builder, not just the deployer.


The Fix (For Anyone on WSL).

Here is the safe script that automatically scans Windows user folders, detects Claude Code projects, and copies the sessions into WSL using cp -n (no-clobber) so your WSL-only sessions are never overwritten. You can copy it directly using the button in the top right:

# Auto-detect Windows Claude Code and copy sessions into WSL
# (WSL username may differ from Windows username, so we scan /mnt/c/Users/)
WIN_CLAUDE=""
for d in /mnt/c/Users/*/; do
  case "$(basename "$d")" in Public|Default|"Default User"|"All Users") continue ;; esac
  [ -d "${d}.claude/projects" ] && WIN_CLAUDE="${d}.claude/projects" && break
done

if [ -n "$WIN_CLAUDE" ]; then
  for dir in "$WIN_CLAUDE"/*/; do
    [ -d "$dir" ] || continue
    name=$(basename "$dir")
    target="$HOME/.claude/projects/$name"
    if [ -d "$target" ]; then
      cp -n "$dir"*.jsonl "$target/" 2>/dev/null || true
    else
      cp -R "$dir" "$target"
    fi
  done
  echo "Windows sessions copied into WSL."
fi

# Then run Paxel
curl -fsSL https://paxel.ycombinator.com/upload.sh | bash -s -- --all

This Debug Was Done on Antigravity.

Here's a fun twist — I was completely out of Claude Code tokens (waiting for my weekly reset on a $20/mo plan). This entire debugging session — reading the Paxel upload script, understanding the Docker bind-mount architecture, trying the symlink approach, diagnosing why it failed, building the copy fix, running all three Paxel iterations, and writing this report — was done on Antigravity (Google's agentic coding assistant).

While Paxel's CLI-based telemetry is outstanding, I would love to see its analysis engine expand in the future to support agent systems like Google's Antigravity. In my workflow, when Claude Code limits are hit, Antigravity picks up the heavy lifting. I have 155 Antigravity sessions (94 on WSL + 61 on Windows) currently sitting in ~/.gemini/antigravity/brain/ that I'd be absolutely thrilled to feed into Paxel's metrics analyzer once they support its JSONL schema. It would be a phenomenal addition to their already brilliant platform.


For YC / Paxel Team.

The root cause is simple: upload.sh only checks $HOME/.claude/projects/ and WSL's Docker can't follow symlinks to /mnt/c/. A ~15 line WSL detection block in upload.sh would fix this for every WSL user automatically:

if grep -qi microsoft /proc/version 2>/dev/null; then
  for d in /mnt/c/Users/*/; do
    win_claude="${d}.claude/projects"
    [ -d "$win_claude" ] || continue
    for proj in "$win_claude"/*/; do
      [ -d "$proj" ] || continue
      name=$(basename "$proj")
      target="$CLAUDE_DIR/$name"
      if [ ! -d "$target" ]; then
        cp -R "$proj" "$target"
      else
        cp -n "$proj"*.jsonl "$target/" 2>/dev/null || true
      fi
    done
    break
  done
fi

To make Paxel even more accessible to WSL developers, adding a quick cross-filesystem scanning block inside upload.sh would be a wonderful enhancement. WSL is a lifeline for builders globally. Not everyone is fortunate enough to be on macOS or proficient in Linux. Builders from places like Bangladesh — where I'm from, where you can't even register an official Apple account — are shipping on Windows and WSL with $20 subscriptions because that's what's accessible.

A small copy-based discovery step inside the official script ensures that every single session gets counted seamlessly. The Paxel team is shipping at incredible speeds, and this addition would make the onboarding experience even more flawless. These global builders deserve to have their full stories told.

— Fauzul Kabir Chowdhury, June 2026
Interactive Q&A · Ask Fauzul about this post