Skip to content

Instantly share code, notes, and snippets.

@XDflight
Last active December 5, 2025 20:28
Show Gist options
  • Select an option

  • Save XDflight/5f3509eb84fc282b88059c909036f5bc to your computer and use it in GitHub Desktop.

Select an option

Save XDflight/5f3509eb84fc282b88059c909036f5bc to your computer and use it in GitHub Desktop.
Remove cache and old extensions under "~/.vscode-server/" on your Linux server

If you often connect to your Linux server using VSCode, the "~/.vscode-server/" folder (and sometimes the ~/.cache/ folder too) can get very large because VSCode:

  1. Does NOT clean its download cache after installing extensions;
  2. Does NOT delete old extensions after updating them;
  3. Does NOT remove old VSCode servers after installing a new version.

If your server storage space is limited, you might consider cleaning "~/.vscode-server/" (and ~/.cache/) regularly using the bash script I wrote. Simply run the following command:

curl -sL https://gist.githubusercontent.com/XDflight/5f3509eb84fc282b88059c909036f5bc/raw/b6b02d41c66c84d6332eb947c669dcd8973f393e/clean_vscode-server.sh | bash -s

This command will automatically download and run the script for you.

I programmed this thing because CMU only provides each student 2GB of AFS cloud storage in normal circumstances, unless maybe the courses you take requested for more, and since I often use VSCode to connect to Virtual Andrew via SSH to do homework, my "~/.vscode-server/" gets too big now and then that I have to clean it manually to keep my storage usage within the quota. This script automates the process to make my life easier.

#!/bin/bash
rm -rf ~/.cache 2> /dev/null
if [ ! -d ~/.vscode-server ]; then
echo "\"~/.vscode-server\" does not exist."
exit 0
fi
shopt -s extglob
rm -rf ~/.vscode-server/data/CachedExtensionVSIXs
SERVER_VERSION=$(grep -oE '[0-9a-f]{40}' ~/.vscode-server/cli/servers/lru.json | head -n1)
echo "[\"Stable-$SERVER_VERSION\"]" > ~/.vscode-server/cli/servers/lru.json
rm -rf ~/.vscode-server/cli/servers/Stable-!($SERVER_VERSION)
rm -f ~/.vscode-server/code-!($SERVER_VERSION)
rm -rf ~/.vscode-server/extensions/*.vsctmp
declare -A exts
for lsout in $(cd ~/.vscode-server/extensions && ls -rvd */); do
ext_fullname=${lsout::-1}
ext_version=$(grep -oP '\-\d+\.\d+\.\d+' <<< "$ext_fullname")
ext_name=${ext_fullname/$ext_version}
ext_version=${ext_version:1}
if [[ -n "${exts[$ext_name]+isset}" ]]; then
rm -rf ~/.vscode-server/extensions/$lsout
else
exts[$ext_name]=$ext_version
fi
done
shopt -u extglob
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment