Skip to main content
Upgrades sf in place, using whichever installer put it there. How it was installed is detected, not assumedpip install --upgrade inside a uv tool environment writes packages uv’s receipt does not know about, which is worse than doing nothing.

What it does for each installation

A refusal names the command that would work, so sf update never leaves you without a next step. This is the reason to prefer uv tool install: it is the installation with nothing in the way of an upgrade.
Keep the CLI close to the server. sf version prints both, and the JobSpec dialect the server speaks; a CLI that speaks a different dialect cannot submit at all, and says so.

sf update

Update sf to the latest version