Snap Package Stuck in Pending State – Real Fix

Linux & Unix Intermediate 👁 8 views 📅 Jun 27, 2026

Snap packages stay pending forever? Here's what's really happening and how to kick them loose. No fluff.

You run snap install something or snap refresh, and it just sits there. Pending. Maybe it shows in snap changes as Doing or Pending and never finishes. This happens most often after a system update that also updates snapd itself, or after waking a laptop from suspend while a snap was mid-install. I've seen it on Ubuntu 22.04 and 24.04, but it can hit any distro running snapd.

What's really going on

Snapd uses a change system. Each install, refresh, or remove creates a change. If that change gets interrupted—say the network drops, or you reboot while it's running—snapd marks it as Pending and won't start a new one until the old one finishes or is aborted. The system isn't broken, it's just waiting on a change that will never complete on its own. It's like a stuck elevator door—no one inside, but the button won't light up until you force it.

The fix (numbered steps)

  1. Check the stuck change. Run snap changes in a terminal. You'll see a list. Look for one with status Pending or Doing. Note its ID number (like 42).
  2. Abort that change. Run sudo snap abort 42 (replace 42 with your actual ID). If it works, the change disappears and you can try the install again.
  3. If abort fails (says "cannot abort change"), then snapd is truly stuck. Restart the snapd service: sudo systemctl restart snapd. Wait a few seconds, then check snap changes again. The stuck change should now be abortable, or it's already gone.
  4. Still stuck? Sometimes the service restart doesn't clear the change. Kill snapd hard: sudo systemctl kill snapd then sudo systemctl start snapd. That forces a fresh state.
  5. Try the install again. Run sudo snap install [package] or sudo snap refresh. It should complete now.

Extra check if it still fails

If it's still pending, check the snapd logs: journalctl -u snapd -n 50. Look for errors like context deadline exceeded or connection refused. That means a network issue or a mount problem. Also verify snapd is running: systemctl status snapd. If it's dead, start it and repeat step 3. I had a client once where the disc was full, and snap couldn't write its cache—df -h showed 100% usage. Freed space, problem gone.

Why this happens more than you'd think

Snap packages are self-contained, but snapd is single-threaded for changes. If you run multiple installs at once (or a refresh kicks in during an install), things queue up. Also, snapd's timeout is generous—up to 10 minutes for a download. If your connection is flaky, it'll sit there forever. I've seen this on hotel Wi-Fi and VPNs that drop packets.

Quick reference commands

snap changes
sudo snap abort 42
sudo systemctl restart snapd
sudo systemctl kill snapd
sudo systemctl start snapd
journalctl -u snapd -n 50

When to just reboot

If you're in a hurry and nothing works, a full reboot often clears the pending state. Snapd re-reads its state from disk, and orphaned changes get cleaned up. But that's a sledgehammer. The steps above are the scalpel.

One last thing: if you use snap with --classic apps like code or slack, the same fix applies. The change system doesn't care about confinement type.

Was this solution helpful?