“Sync Skills for Cloud Agents” stuck at syncing 0 of 0

Where does the bug appear (feature/product)?

Cursor Agents Window

Describe the Bug

The “Sync Skills for Cloud Agents” option is stuck on the syncing step and never finishes. As a result, Cloud Agents can’t access my local skills. This means I can’t use Cloud Agents.

Steps to Reproduce

Agent Window > Settings > Agents > Sync Skills for Cloud Agents

Expected Behavior

It should be able to sync.

Screenshots / Screen Recordings

Operating System

MacOS

Version Information

Version: 3.20.17
VS Code Extension API: 1.128.0
Commit: 0c32194e3fb5ffaced9fb36430b860ec301e1fc0
Date: 2026-09-12T03:16:10.634Z
Layout: Agent Window
Build Type: Stable
Release Track: Default
Electron: 42.10.0
Chromium: 148.0.7778.280
Node.js: 24.18.1
V8: 14.8.178.38-electron.0
xterm.js: 6.1.0-beta.291
OS: Darwin arm64 24.6.0

Additional Information

For context, I mostly install skills with npx skills and symlink them to ~/.cursor/skills. I also manually wrote some skills in ~/.agents/skills and symlinked them to ~/.cursor/skills.

I also tried following this "Sync Skills for Cloud Agents" stuck - #5 by deanrie , but nothing shows in the console when I triggered it.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @Jerome_De_Leon, thanks for the detail on how your skills are installed - that’s the key. Sync only picks up real folders in ~/.cursor/skills; symlinks are skipped, and since yours are all symlinked in from npx skills/~/.agents/skills, it finds 0 to send. Nothing’s wrong with the skills (your local agent still uses them), and nothing was removed.

To get them across:

  1. Settings → Agents → Sync Skills for Cloud Agents → Cancel, then fully quit Cursor (all windows).
  2. Replace the symlinks with real copies:
cd ~/.cursor/skills
for s in *; do
  if [ -L "$s" ]; then
    cp -RL "$s" "$s.copy" && rm "$s" && mv "$s.copy" "$s"
  fi
done
  1. Open only the Agents Window, turn Sync on, and wait for “Syncing N of N” to finish (N = your real skill count).

The spinner not finishing is a separate issue we’re tracking (more likely with multiple windows open), so keep just the Agents Window open for this. One note: later npx skills updates will need to be copied in rather than symlinked. If it still sticks, tell me the N of N it shows.

You’ve got the tradeoff right, plain copies fall out of date because npx skills updates the source, not the copy. The setup that keeps both aligned is to flip the symlink direction: keep the real skill folders in ~/.cursor/skills (so the cloud sync picks them up) and point ~/.agents/skills at those instead of the other way around. Then npx skills updates land in the real folders that local and cloud both use, with nothing to re-copy. The symlink-skip in the sync itself is a known issue we’re tracking, so that’s a stopgap until the sync follows symlinks directly.