Remote SSH: crepectl requires GLIBC 2.39 — indexing broken on Ubuntu 22.04 (Cursor 3.13.10)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Regression on Remote SSH (Linux): Cursor indexed my workspace normally before on the same Ubuntu 22.04 VPS without needing git init at the workspace root. After updating to Cursor 3.13.10, indexing broke.

Root cause: Cursor 3.13.10 ships crepectl (Instant Grep indexer) linked against GLIBC 2.39. Ubuntu 22.04 LTS only has GLIBC 2.35. The binary fails immediately:

crepectl: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.39' not found

Cursor shows a misleading error instead:

index build failed: miniserde error
index failed to bootstrap: no indexes available on disk

Without git at workspace root:

cannot index repository without Git

With git init + commit at apps/ root: GrepClient starts but crepectl still crashes (GLIBC) until we applied a local wrapper script.

Cloud semantic indexing also never starts:

Not creating an indexing watcher: no queryable index to build (indexing off or kill switch engaged)

View included files in Cursor Settings fails — embeddable_files.txt is never created.

Current situation after our unofficial fix (cursor_fix_crepectl_glibc.sh):

  • Instant Grep: WORKING (index OK in Cursor Grep Service logs)
  • Cloud semantic index: STILL BROKEN (no embeddable_files.txt, no indexing watcher)
  • Index only covers 6 files (0 documents in commit, 6 in worktree) — full Frappe bench not indexed
  • workspaceStorage is NOT where the index lives (~16 KB session data only)

Instant Grep index location (after fix):

/home/frappe/frappe-bench-15/apps/.git/cursor/crepe/8a9d2b673e339a90dbab081a0ac34e6046eeaf0e/
  index.bin, postings.bin, metadata.json (~24 KB total)

All production servers are Ubuntu 22.04 LTS by choice. Cursor must ship a compatible crepectl or restore the simpler pre-3.13.10 indexing — not require OS upgrades or user-maintained GLIBC wrappers.

Steps to Reproduce

  1. Use SSH host with Ubuntu 22.04 LTS (GLIBC 2.35):

    lsb_release -a
    /lib/x86_64-linux-gnu/libc.so.6 | head -1

  2. Connect from Cursor IDE 3.13.10 via Remote SSH (Windows client).

  3. Open workspace:

    /home/frappe/frappe-bench-15/apps

  4. Enable Cursor Settings → Indexing & Docs → Index Repositories for Instant Grep (ON).

  5. Privacy → Share Data (not Privacy Mode).

  6. Reload window.

  7. Output → Cursor Grep Service — observe miniserde error (before any fix):

    GrepClient initialized successfully
    starting index build …
    index build failed: miniserde error

  8. On SSH host, confirm GLIBC failure:

    CREPE=$(find ~/.cursor-server/bin/linux-x64 -name crepectl 2>/dev/null | head -1)
    “$CREPE” 2>&1

    GLIBC_2.39 not found; exit 1

  9. Output → Cursor Indexing & Retrieval — cloud index never starts:

    Not creating an indexing watcher: no queryable index to build (indexing off or kill switch engaged)

  10. Settings → View included files — file not found:

    …/workspaceStorage/6b186c96…/anysphere.cursor-retrieval/embeddable_files.txt

  11. Optional — git init at workspace root (new in 3.13.x, not required before):

    cd /home/frappe/frappe-bench-15/apps
    git init -b master && git add .gitignore && git commit -m “workspace root for indexing”

  12. Optional — our unofficial fix (Instant Grep only):

    bash /home/frappe/frappe-bench-15/apps/cursor_fix_crepectl_glibc.sh

    Reload window → Grep Service shows: index OK in ~10–35ms

Expected Behavior

  • crepectl runs on Ubuntu 22.04 LTS without GLIBC 2.39 (ship GLIBC 2.35-compatible or statically linked binary).
  • Or fall back to the simpler pre-3.13.10 indexing (file walk + rg) when crepectl cannot start.
  • Do not require git init at every opened folder root (subfolder repos were enough before).
  • Instant Grep index builds into /.git/cursor/crepe/
  • Cloud semantic indexing starts independently; embeddable_files.txt is created; View included files works.
  • Show real error (GLIBC 2.39 required, host has 2.35) instead of miniserde error.
  • Do not require upgrading all VPS hosts to Ubuntu 24.04+.

Operating System

Windows 10/11

Version Information

IDE (local — Menu → About Cursor → Copy):

Version: 3.13.10 (system setup)
VS Code Version: 1.128.0
Commit: 4f02290ccd9304f0e6bf8ee85f6e9106f02ac1f0
Date: 2026-07-23T21:41:07.333Z
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
OS: Windows_NT x64 10.0.26200

Remote SSH server:

Cursor server: 3.13.10 (commit 4f02290ccd9304f0e6bf8ee85f6e9106f02ac1f0, x64)
OS: Ubuntu 22.04.5 LTS
GLIBC: 2.35-0ubuntu3.13
Git: 2.34.1
Host: vps.contaboserver.net (Contabo VPS)
Workspace: /home/frappe/frappe-bench-15/apps
crepectl: ~/.cursor-server/bin/linux-x64/4f02290ccd9304f0e6bf8ee85f6e9106f02ac1f0/resources/helpers/crepectl
crepectl: 6274216 bytes, 2026-07-24, requires GLIBC_2.39

For AI issues: which model did you use?

N/A — infrastructure / indexing bug, not model-specific.

For AI issues: add Request ID with privacy disabled

N/A — infrastructure / indexing bug, not model-specific.

Additional Information

Workspace: /home/frappe/frappe-bench-15/apps (Frappe ERPNext bench — multiple separate git repos under one opened folder)

Production: All Remote SSH servers are Ubuntu 22.04 LTS intentionally (LTS stability). Fix belongs in Cursor’s crepectl binary, not mass OS upgrades.

TROUBLESHOOTING WE TRIED:

  1. Opened apps/ with no root .git → cannot index repository without Git
  2. git init at apps/ root → failed to open git excludes index (no commits)
  3. git init + commit + .gitignore → GrepClient started; miniserde error (GLIBC 2.39)
  4. Fixed .gitignore (stopped ignoring */ ) → still miniserde until GLIBC wrapper
  5. Enabled Index Repositories for Instant Grep (Indexing & Docs) → required for GrepClient
  6. Privacy → Share Data enabled → cloud indexing still does not start
  7. Ran cursor_fix_crepectl_glibc.sh → Instant Grep WORKS (index OK)
  8. View included files → file not found (cloud index never ran)

UNOFFICIAL FIX SCRIPT (Instant Grep only — not acceptable as permanent solution):

/home/frappe/frappe-bench-15/apps/cursor_fix_crepectl_glibc.sh
  • Downloads Ubuntu 24.04 libc6 2.39 to ~/.local/share/cursor-glibc239/ (no OS upgrade)
  • Backs up crepectl → crepectl.orig
  • Replaces helpers/crepectl with bash wrapper using GLIBC 2.39
  • Re-run after Cursor server updates

Run:

bash /home/frappe/frappe-bench-15/apps/cursor_fix_crepectl_glibc.sh
# then: Developer → Reload Window

INDEX STORAGE (current):

Instant Grep index (WORKS after script):

/home/frappe/frappe-bench-15/apps/.git/cursor/crepe/8a9d2b673e339a90dbab081a0ac34e6046eeaf0e/
  index.bin (~4 KB), postings.bin (~1.5 KB), metadata.json
Total ~24 KB. Only 6 files indexed (0 in commit, 6 in worktree).

NOT the index — session storage only (~16 KB):

/home/frappe/.cursor-server/data/User/workspaceStorage/6b186c96adb42c014ba32119cf7a0f3b/
  vscode.lock, ms-python.python/pythonrc.py

MISSING — cloud index (View included files):

/home/frappe/.cursor-server/data/User/workspaceStorage/6b186c96adb42c014ba32119cf7a0f3b/anysphere.cursor-retrieval/embeddable_files.txt

Directory anysphere.cursor-retrieval/ does not exist.

CURRENT STATUS (2026-07-25):

Instant Grep / crepectl: Working (via wrapper script)
GrepClient: index OK in 10–35ms
Cloud semantic index: Not running
View included files: Broken (file not found)
Privacy Share Data: Enabled — does not fix cloud
Index size: Too small (6 files only)

LOG EXCERPTS:

Log dir: ~/.cursor-server/data/logs/20260725T030507/

Before fix — Cursor Grep Service:

index build failed: miniserde error

After fix — Cursor Grep Service (exthost10/11):

GrepClient initialized successfully
loading index for commit 8a9d2b673e339a90dbab081a0ac34e6046eeaf0e
reset index to head: 0 documents in commit, 6 in worktree
index OK in 10.818568ms

Still broken — Cursor Indexing & Retrieval:

Creating Indexing Repo client: https://repo42.cursor.sh
Not creating an indexing watcher: no queryable index to build (indexing off or kill switch engaged)

strace (original crepectl):

crepectl: version `GLIBC_2.39' not found
+++ exited with 1 +++

SUGGESTED FIX (Cursor team):

Preferred: Fall back to pre-3.13.10 simpler indexing (rg/file walk) when crepectl fails. Cursor-server already ships rg under resources/helpers/.

Also acceptable: Ship crepectl for GLIBC 2.35 or statically linked for linux-x64.

Requirements: Do not require Ubuntu 24.04 upgrades. Show real GLIBC error not miniserde. Decouple cloud indexing from crepectl success.

Related: same host also hit universal ms-python.python missing PET binary on Remote SSH (separate report).

Does this stop you from using Cursor

Yes - Cursor is unusable

Hey, thanks for the detailed report. Your diagnosis is on point. I’m going to break it down, because there are actually three different things mixed together here.

  1. crepectl requires GLIBC 2.39 on Ubuntu 22.04.
    This is a real packaging bug on our side. We shipped crepectl linked against GLIBC 2.39, but Ubuntu 22.04 LTS has 2.35. We already opened an issue, but I can’t share an ETA yet. One important detail: this isn’t a 3.13.10-only regression. Older remote builds also needed 2.39, it’s just that until a recent change the crash was silently handled by the ripgrep fallback, so it wasn’t noticeable. Your wrapper script that loads libc 2.39 is a totally reasonable temporary workaround. If you don’t want to keep it, search will still work via the ripgrep fallback, just slower and without the crepe index.

  2. Misleading miniserde error instead of the real GLIBC error.
    We’re aware of this too. Logging is swallowing the real reason crepectl crashes and shows the useless miniserde error instead. Tracked separately.

  3. Cloud semantic index, embeddable_files.txt, View included files.
    This isn’t a bug and it won’t be restored. Semantic embeddings indexing is being intentionally rolled back in favor of grep-based retrieval (Instant Grep plus reading files). That’s why you see no queryable index... kill switch engaged in logs, why there’s no embeddable_files.txt, and why View included files doesn’t work. The team’s explanation is here: What do you think about Cursor removing the codebase indexing settings?
    So this part can’t be fixed by restoring anything. It’s the new by-design behavior.

  4. Index only shows 6 files.
    This is expected for your layout. Instant Grep indexing is tied to a git commit and covers the root repo of the opened folder plus its submodules. In a Frappe bench setup, /apps contains separate independent git repos, not submodules, so the root repo only tracks a couple of files. That’s why you get 0 documents in commit, 6 in worktree. Those nested repos aren’t indexed as separate repos. Search in them still works via the ripgrep fallback.

So, items 1 and 2 are on us, logged, no ETA yet. Items 3 and 4 are expected behavior, not a bug. If a specific workflow got noticeably worse after the move to grep-based search, share the request ID and repo structure and we’ll take a closer look. Let me know if anything here doesn’t match what you’re seeing.

May I ask if someone filed a bug to cursor for point 1) with the glibc issues for crepectl?
It is still like that in 3.14.7.

Hey, thanks for flagging this. Yeah, item 1, crepectl needs GLIBC 2.39 on hosts with older glibc like Ubuntu 22.04 or RHEL 9, is a known issue we’re tracking. I’ve noted your confirmation that it still reproduces in 3.14.7. I can’t share an exact ETA yet, but I’ll post in the thread when there’s an update.

Until there’s a fix, there are two workable options:

  • Use the wrapper script from the original post above. It loads libc 2.39 without upgrading the OS, and it’s a reasonable temporary workaround so the crepe index can build.
  • If you don’t want to use it, search will still work via the ripgrep fallback, just slower and without the crepe index.

Let me know if the behavior in 3.14.7 is different from what’s described in the thread. If it is, please share logs from Output > Cursor Grep Service and we can dig in.