snap(8)
๐ธ NAME ๐ธ
snap โ Tool to interact with snaps ๐
๐ฆ SYNOPSIS ๐ฆ
snap [OPTIONS]
๐ DESCRIPTION ๐
Okay so bestie, the snap command is literally your main character tool for installing, configuring, refreshing, and removing snaps. Snaps are packages that work across many different Linux distributions, enabling secure delivery and operation of the latest apps and utilities. Periodt. ๐
โจ
๐ OPTIONS ๐
(There are no standalone options listed here โ they're all tucked inside the commands below, iykyk ๐)
๐ COMMANDS ๐
abort
Abort a pending change ๐
The abort command attempts to abort a change that still has pending tasks.
Usage: snap [OPTIONS] abort [abort-OPTIONS]
--lastโ Select last change of given type (install, refresh, remove, try, auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell. ๐
ack
Add an assertion to the system ๐
The ack command tries to add an assertion to the system assertion database.
The assertion may also be a newer revision of a pre-existing assertion that it will replace.
To succeed the assertion must be valid, its signature verified with a known public key and the assertion consistent with and its prerequisite in the database.
alias
Set up a manual alias ๐
The alias command aliases the given snap application to the given alias.
Once this manual alias is setup the respective application command can be invoked just using the alias.
Usage: snap [OPTIONS] alias [alias-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.
aliases
List aliases in the system ๐
The aliases command lists all aliases available in the system and their status.
$ snap aliases <snap>
Lists only the aliases defined by the specified snap.
changes
List system changes ๐
The changes command displays a summary of system changes performed recently.
Usage: snap [OPTIONS] changes [changes-OPTIONS]
--abs-timeโ Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.
check-snapshot
Check a snapshot ๐ธ
The check-snapshot command verifies the user, system and configuration data of the snaps included in the specified snapshot.
The check operation runs the same data integrity verification that is performed when a snapshot is restored.
By default, this command checks all the data in a snapshot. Alternatively, you can specify the data of which snaps to check, or for which users, or a combination of these.
If a snap is included in a check-snapshot operation, excluding its system and configuration data from the check is not currently possible. This restriction may be lifted in the future. ๐
Usage: snap [OPTIONS] check-snapshot [check-snapshot-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.--usersโ Check data of only specific users (comma-separated) (default: all users)
component
Show detailed information about snap components ๐งฉ
The component command shows detailed information about snap components.
You must specify exactly one snap and one or more of its components in the form <snap>+<component>+[<component>...].
Usage: snap [OPTIONS] component [component-OPTIONS]
--color<default: "auto">--unicode<default: "auto">--no-wait
components
List available and installed components for installed snaps ๐ฆ
The components command displays a summary of the components that are installed and available for the set of currently installed snaps.
Components for specific installed snaps can be queried by providing snap names as positional arguments.
connect
Connect a plug to a slot ๐
The connect command connects a plug to a slot. It may be called in the following ways:
$ snap connect <snap>:<plug> <snap>:<slot>
Connects the provided plug to the given slot.
$ snap connect <snap>:<plug> <snap>
Connects the specific plug to the only slot in the provided snap that matches the connected interface. If more than one potential slot exists, the command fails. ๐ญ
$ snap connect <snap>:<plug>
Connects the provided plug to the slot in the core snap with a name matching the plug name.
Usage: snap [OPTIONS] connect [connect-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.
connections
List interface connections ๐ธ๏ธ
The connections command lists connections between plugs and slots in the system.
Unless <snap> is provided, the listing is for connected plugs and slots for all snaps in the system. In this mode, pass --all to also list unconnected plugs and slots.
$ snap connections <snap>
Lists connected and unconnected plugs and slots for the specified snap.
Usage: snap [OPTIONS] connections [connections-OPTIONS]
--allโ Show connected and unconnected plugs and slots
create-cohort
Create cohort keys for a set of snaps ๐๏ธ
The create-cohort command creates a set of cohort keys for a given set of snaps.
A cohort is a view or snapshot of a snap's "channel map" at a given point in time that fixes the set of revisions for the snap given other constraints (e.g. channel or architecture). The cohort is then identified by an opaque per-snap key that works across systems. Installations or refreshes of the snap using a given cohort key would use a fixed revision for up to 90 days, after which a new set of revisions would be fixed under that same cohort key and a new 90 days window started. โณ
debug
Run debug commands ๐
The debug command contains a selection of additional sub-commands.
โ ๏ธ Debug commands can be removed without notice and may not work on non-development systems.
debug api
Execute raw query to snapd API ๐
Execute a raw query to snapd API. Complex input can be read from stdin, while output is printed to stdout. See examples below:
List all snaps:
$ snap debug api /v2/snaps
Find snaps with name foo:
$ snap debug api '/v2/find?name=foo'
Request refresh of snap 'some-snap':
$ echo '{"action": "refresh"}' | snap debug api -X POST \
-H 'Content-Type: application/json' /v2/snaps/some-snap
Execute a request to the session agent of UID 12345:
$ snap debug api --session-agent-uid=12345 /v1/session-info
Usage: snap [OPTIONS] debug api [api-OPTIONS]
--snap-socketโ Use snap access socket--session-agent-uidโ Communicate with session agent of a given UID--disable-authโ Disable authorization with data fromauth.json-H,--headerโ Set header (can be repeated multiple times), header kind and value are separated with ': '-X,--requestโ HTTP method to use (defaults to GET)--failโ Fail on request errors
debug confinement
Print the confinement mode the system operates in ๐
The confinement command will print the confinement mode (strict, partial or none) the system operates in.
debug connectivity
Check network connectivity status ๐ก
The connectivity command checks the network connectivity of snapd.
debug device-cgroup
Show devices allowed in a snap's device cgroup ๐
The device-cgroup command shows the devices currently allowed in the device cgroup of a snap. On cgroup v1, this reads the devices.list file. On cgroup v2, this reads the BPF device hash map.
๐ This command requires root privileges.
debug execution
Obtain information about execution aspects of snap toolchain commands โ๏ธ
Display debugging information about aspects of snap toolchain execution, such as reexecution, tools location etc.
debug execution apparmor
Show apparmor ๐ก๏ธ
debug execution internal-tool
Show internal tool execution info ๐ ๏ธ
debug execution snap
Show snap execution info ๐
debug features
Obtain the complete list of feature tags ๐ท๏ธ
Display json output that contains the complete list of feature tags present in snapd and snap. Feature tags are a collection of data that describe significant code paths within snapd including tasks, changes, interfaces, endpoints, snap commands, and ensure helper functions.
debug lsm
(internal) obtain status information on LSMs ๐
(internal) obtain status information on LSMs
debug migrate-home
Migrate snaps' directory to ~/Snap. ๐
Migrate snaps' directory to ~/Snap.
Usage: snap [OPTIONS] debug migrate-home [migrate-home-OPTIONS]
--no-wait
debug mount-namespace
Debug and inspect snap mount namespaces ๐๏ธ
The debug mount-namespace command displays information about the mount namespace of a given snap when invoked with no flags. Use --shell to start a shell or run a command inside the mount namespace. Use --discard to discard the mount namespace of a snap if one exists.
๐ The command may require root privileges.
Usage: snap [OPTIONS] debug mount-namespace [mount-namespace-OPTIONS]
--shellโ Open a shell or execute a command within the mount namespace--discardโ Discard the mount namespace
debug paths
Print system paths ๐ค๏ธ
The paths command prints the list of paths detected and used by snapd.
debug refresh-app-awareness
(internal) list refresh-app-awareness details ๐
(internal) list refresh-app-awareness details
Usage: snap [OPTIONS] debug refresh-app-awareness [refresh-app-awareness-OPTIONS]
--unicode<default: "auto">
debug sandbox-features
Print sandbox features available on the system ๐๏ธ
The sandbox command prints tags describing features of individual sandbox components used by snapd on a given system.
Usage: snap [OPTIONS] debug sandbox-features [sandbox-features-OPTIONS]
--requiredโ Ensure that given backend:feature is available
debug seeding
Obtain seeding and preseeding details ๐ฑ
Obtain seeding and preseeding details
Usage: snap [OPTIONS] debug seeding [seeding-OPTIONS]
--unicode<default: "auto">
debug snap-downloads-cache
Show statistics of the local snaps download cache ๐พ
Show statistics of the local snap downloads cache.
Usage: snap [OPTIONS] debug snap-downloads-cache [snap-downloads-cache-OPTIONS]
--cacheโ Cache directory, if different than the default location--max-itemsโ Maximum count of cache-unique items, if different than the default--allโ List all entries--max-size-bytesโ Max size of all remaining cache items--max-ageโ Max age of items
debug stacktraces
Obtain stacktraces of all snapd goroutines ๐งต
Obtain stacktraces of all snapd goroutines.
debug state
Inspect a snapd state file. ๐
Inspect a snapd state file, bypassing snapd API.
Usage: snap [OPTIONS] debug state [state-OPTIONS]
okay continuing the option parade, no skipping, we're doing all of them ๐
--abs-timeโ Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.--changesโ List all changes--taskโ ID of the task to inspect--changeโ ID of the change to inspect--checkโ Check change consistency--connectionsโ List all connections--connectionโ Show details of the matching connections (snap or snap:plug,snap:slot or snap:plug-or-slot--is-seededโ Output seeding status (true or false)--dotโ Dot (graphviz) output--no-holdโ Omit tasks in 'Hold' state in the change output
debug timings โฑ๏ธโจ
Get the timings of the tasks of a change
The timings command displays details about the time each task runs. bestie we are literally timing every little task, it's giving stopwatch energy ๐ฐ๏ธ
Usage:
snap [OPTIONS] debug timings [timings-OPTIONS]
--lastโ Select last change of given type (install, refresh, remove, try, auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell.--ensureโ Show timings for a change related to the given Ensure activity (one of: auto-refresh, become-operational, refresh-catalogs, refresh-hints, seed)--allโ Show timings for all executions of the given Ensure or startup activity, not just the latest--startupโ Show timings for the startup of given subsystem (one of: load-state, ifacemgr)--verboseโ Show more information
debug validate-seed ๐ฑ๐
Validate snap seed
Validate correctness of snap seed located in the directory containing seed.yaml file. like a vibe check but for seeds, fr fr ๐พ
disable ๐๐ค
Disable a snap in the system
The disable command disables a snap. The binaries and services of the snap will no longer be available, but all the data is still available and the snap can easily be enabled again. it's not gone bestie, it's just napping ๐ด
Usage:
snap [OPTIONS] disable [disable-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.
disconnect โ๏ธ๐
Disconnect a plug from a slot
The disconnect command disconnects a plug from a slot. It may be called in the following ways:
$ snap disconnect <snap>:<plug> <snap>:<slot>
Disconnects the specific plug from the specific slot.
$ snap disconnect <snap>:<slot or plug>
Disconnects everything from the provided plug or slot. The snap name may be omitted for the core snap.
When an automatic connection is manually disconnected, its disconnected state is retained after a snap refresh. The --forget flag can be added to the disconnect command to reset this behaviour, and consequently re-enable an automatic reconnection after a snap refresh. so like, the breakup is remembered until you hit --forget ๐โก๏ธ๐
Usage:
snap [OPTIONS] disconnect [disconnect-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.--forgetโ Forget remembered state about the given connection.
download ๐ฅ๐พ
Download the given snap
The download command downloads the given snap, components, and their supporting assertions to the current directory with .snap, .comp, and .assert file extensions, respectively. everything lands right where you are standing ๐
Usage:
snap [OPTIONS] download [download-OPTIONS]
--channelโ Use this channel instead of stable--edgeโ Install from the edge channel--betaโ Install from the beta channel--candidateโ Install from the candidate channel--stableโ Install from the stable channel--revisionโ Download the given revision of a snap. When downloading components, download the components associated with the given snap revision.--basenameโ Use this basename for the snap, component, and assertion files (defaults to<snap>_<revision>)--target-directoryโ Download to this directory (defaults to the current directory)--only-componentsโ Only download the given components, not the snap--cohortโ Download from the given cohort
enable ๐ฅ๐
Enable a snap in the system
The enable command enables a snap that was previously disabled. welcome back queen, we missed you ๐
Usage:
snap [OPTIONS] enable [enable-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.
export-key ๐๐ค
Export cryptographic public key
The export-key command exports a public key assertion body that may be imported by other systems. sharing is caring, and this key is the shareable kind โจ
Usage:
snap [OPTIONS] export-key [export-key-OPTIONS]
--accountโ Format public key material as a request for an account-key for this account-id
export-snapshot ๐ธ๐ฆ
Export a snapshot
Export a snapshot to the given filename. that's it, that's the whole thing, iconic ๐
find ๐๐๏ธ
Find packages to install
The find command queries the store for available packages.
With the --private flag, which requires the user to be logged-in to the store (see 'snap help login'), it instead searches for private snaps that the user has developer access to, either directly or through the store's collaboration feature.
A green check mark (given color and unicode support) after a publisher name indicates that the publisher has been verified. verified publisher = the blue check of snaps โ
Usage:
snap [OPTIONS] find [find-OPTIONS]
Aliases: search
--privateโ Search private snaps.--narrowโ Only search for snaps in โstableโ.--section [="show-all-sections-please"]<default: "no-section-specified"> โ Restrict the search to a given section.--color<default: "auto"> โ Use a little bit of color to highlight some things.--unicode<default: "auto"> โ Use a little bit of Unicode to improve legibility.
forget ๐๏ธ๐ญ
Delete a snapshot
The forget command deletes a snapshot. This operation can not be undone. like, cannot, bestie, there is no undo button, no take-backs, no ctrl+z ๐
A snapshot contains archives for the user, system and configuration data of each snap included in the snapshot.
By default, this command forgets all the data in a snapshot. Alternatively, you can specify the data of which snaps to forget.
Usage:
snap [OPTIONS] forget [forget-OPTIONS]
--no-waitโ Do not wait for the operation to finish but just print the change id.
get ๐๐
Print configuration options
The get command prints configuration options for the provided snap.
$ snap get snap-name username
frank
If multiple option names are provided, the corresponding values are returned:
$ snap get snap-name username password
Key Value
username frank
password ...
Nested values may be retrieved via a dotted path:
$ snap get snap-name author.name
frank
Usage:
snap [OPTIONS] get [get-OPTIONS]
-tโ Strict typing with nulls and quoted strings-dโ Always return document, even with single key-lโ Always return list, even with single key--defaultโ A strictly typed default value to be used when none is found--with <param>=<constraint>โ Parameter constraints for filtering confdb queries--wait-forโ Maximum duration to wait for confdb access (e.g.10s)
help ๐ซถโ
Show help about a command
The help command displays information about snap commands.
Usage:
snap [OPTIONS] help [help-OPTIONS]
--allโ Show a short summary of all commands
import-snapshot ๐ฅ๐ธ
Import a snapshot
Import an exported snapshot set to the system. The snapshot is imported with a new snapshot ID and can be restored using the restore command. new ID, fresh start, glow up โจ
Usage:
snap [OPTIONS] import-snapshot [import-snapshot-OPTIONS]
--abs-time
info ๐๐
Show detailed information about snaps
The info command shows detailed information about snaps.
The snaps can be specified by name or by path; names are looked for both in the store and in the installed snaps; paths can refer to a .snap file, or to a directory that contains an unpacked snap suitable for 'snap try' (an example of this would be the 'prime' directory snapcraft produces). so like, name it OR point at it, both work, we're flexible like that ๐ฆ
Usage:
snap [OPTIONS] info [info-OPTIONS]
--color<default: "auto"> โ Use a little bit of color to highlight some things.--unicode<default: "auto"> โ Use a little bit of Unicode to improve legibility.--abs-timeโ Display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, then YYYY-MM-DD.--verboseโ Include more details on the snap (expanded notes, base, etc.)
install ๐๐ฆ
Install snaps on the system
The install command installs the named snaps on the system.
To install multiple instances of the same snap, append an underscore and a unique identifier (for each instance) to a snap's name.
Parallel instances are installed with --unaliased passed implicitly to avoid conflicts with existing installs. This behaviour can be altered by passing --prefer which will enable all aliases of the given snap in preference to conflicting aliases of other snaps whose automatic aliases will be disabled and manual aliases will be removed.
With no further options, the snaps are installed tracking the stable channel, with strict security confinement. All available channels of a snap are listed in its 'snap info' output.
When --revision is used, a later refresh will typically undo the revision override, taking the snap back to the current revision of the channel it's tracking.
Use --name to set the instance name when installing from snap file.
Installation of snaps built with classic confinement requires explicit confirmation by passing --classic.
Usage:
snap [OPTIONS] install [install-OPTIONS]
--color<default: "auto"> โ Use a little bit of color to highlight some things.--unicode<default: "auto"> โ Use a little bit of Unicode to improve legibility.--no-waitโ Do not wait for the operation to finish but just print the change id.--channelโ Use this channel instead of stable--edgeโ Install from the edge channel--betaโ Install from the beta channel--candidateโ Install from the candidate channel--stableโ Install from the stable channel--devmodeโ Enable development mode, relaxing confinement for strict snaps or confirming devmode snap installation--jailmodeโ Put snap in enforced confinement mode--classicโ Confirm installation of a snap that uses classic confinement--revisionโ Install the given revision of a snap--dangerousโ Install the given snap file even if there are no pre-acknowledged signatures for it, meaning it was not verified and could be dangerous (--devmodeimplies this)--unaliasedโ Install the given snap without enabling its automatic aliases--preferโ turns on all the aliases of the snap you're installing, and gives them priority over any conflicting aliases from other snaps ๐--nameโ installs the snap file under the instance name you pick, bestie--cohortโ installs the snap into the cohort you name--ignore-validationโ ignores validation from other snaps that's blocking the install ๐ซ--transaction(default:"per-snap") โ one transaction per-snap, or one transaction for all the snaps you specified--quota-groupโ adds the snap to a quota group when it installs
๐ interface โ show details of snap interfaces
The interface command shows details of snap interfaces, periodt.
If you don't hand it an interface name, it shows you a list of interface names that have at least one connection โ or, if you pass --all, a list of all the interfaces ๐ฆ
Usage: snap [OPTIONS] interface [interface-OPTIONS]
--attrsโ show interface attributes--allโ include unused interfaces too
๐ธ known โ show known assertions of the provided type
The known command shows known assertions of the type you give it. And if you pass header=value pairs after the assertion type, then the assertions shown have to also match those headers with the values you provided. no cap โจ
Usage: snap [OPTIONS] known [known-OPTIONS]
--remoteโ query the store for the assertion, viasnapdif that's possible--directโ query the store for the assertion without trying to go viasnapd
๐ list โ list installed snaps
The list command displays a summary of the snaps installed on the current system ๐
A green check mark (if you've got color and unicode support) sitting after a publisher name means that publisher is verified. iconic.
Usage: snap [OPTIONS] list [list-OPTIONS]
--allโ show all revisions--color(default:"auto") โ use a little bit of color to highlight some things--unicode(default:"auto") โ use a little bit of Unicode to improve legibility
๐ login โ authenticate to snapd and the store
The login command authenticates you to snapd and the snap store, and saves your credentials into the ~/.snap/auth.json file. After that, further communication with snapd happens using those credentials ๐ซถ
It's not necessary to log in to interact with snapd. Doing it anyway, though, enables interactions without sudo, plus some some developer-oriented features as detailed in the help for the find, install and refresh commands.
An account can be set up at https://login.ubuntu.com
๐ช logout โ log out of snapd and the store
The logout command logs the current user out of snapd and the store. bye bestie ๐
๐ logs โ retrieve logs for services
The logs command fetches the logs of the given services and displays them in chronological order.
Usage: snap [OPTIONS] logs [logs-OPTIONS]
--abs-timeโ display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, thenYYYY-MM-DD.-n(default:"10") โ show only the given number of lines, or'all'-fโ wait for new lines and print them as they come in ๐ฅ
๐ง model โ get the active model for this device
The model command returns the active model assertion information for this device.
By default, only the essential model identification information is in the output โ but you can expand that to include all of an assertion's non-meta headers.
That verbose output is presented in a structured, yaml-like format. slay.
Similarly, the active serial assertion can be used for the output instead of the model assertion.
Usage: snap [OPTIONS] model [model-OPTIONS]
--abs-timeโ display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, thenYYYY-MM-DD.--color(default:"auto") โ use a little bit of color to highlight some things--unicode(default:"auto") โ use a little bit of Unicode to improve legibility--serialโ print the serial assertion instead of the model assertion--verboseโ print all specific assertion fields--assertionโ print the raw assertion
โ okay โ acknowledge warnings
The okay command acknowledges the warnings listed with 'snap warnings'.
Once a warning is acknowledged it won't appear again unless it re-occurrs and sufficient time has passed. it's giving closure ๐
๐ฆ pack โ pack the given directory as a snap
The pack command packs the given snap-dir as a snap and writes the result to target-dir. If target-dir is omitted, the result gets written to the current directory. And if both source-dir and target-dir are omitted, the pack command packs the current directory ๐
The default file name for a snap can be derived entirely from its snap.yaml, but in some situations it's simpler for a script to just feed the filename in. In those cases, --filename can be given to override the default. If that filename isn't absolute, it's taken as relative to target-dir.
When used with --check-skeleton, pack only checks whether snap-dir contains valid snap metadata, and raises an error otherwise. Application commands listed in the snap metadata file, but appearing with incorrect permission bits, result in an error. Commands that are missing from snap-dir get listed in diagnostic messages.
Usage: snap [OPTIONS] pack [pack-OPTIONS]
--check-skeletonโ validate snap-dir metadata only--filenameโ output to this filename--compressionโ compression to use (e.g.xzorlzo)
๐ prefer โ enable aliases from a snap, disabling any conflicting aliases
The prefer command enables all the aliases of the given snap in preference to conflicting aliases of other snaps, whose aliases will be disabled (or removed, for manual ones).
Usage: snap [OPTIONS] prefer [prefer-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id
๐ผ๏ธ prepare-image โ prepare a device image
The prepare-image command performs some of the steps necessary for creating device images.
For core images it's not invoked directly but usually via ubuntu-image.
For preparing classic images it supports a --classic mode.
Usage: snap [OPTIONS] prepare-image [prepare-image-OPTIONS]
--classicโ enable classic mode to prepare a classic model image--preseedโ preseed (UC20+ only)--preseed-sign-keyโ name of the key to use to sign the preseed assertion, otherwise use the default key--apparmor-features-dirโ optional path to apparmor kernel features directory (UC20+ only)--sysfs-overlayโ optional sysfs overlay to be used when running preseeding steps--archโ specify an architecture for snaps for--classicwhen the model does not--channelโ the channel to use--snap<snap>[=<channel>]โ include the given snap from the store or a local file and/or specify the channel to track for the given snap--comp<snap>+<comp>โ include the given component from the store or a local file--revisionsโ specify aseeds.manifestfile referencing the exact revisions of the provided snaps which should be installed--write-revisions(default:"./seed.manifest") โ writes a manifest file containing references to the exact snap revisions used for the image. A path for the manifest is optional.--validationโ control whether validations should be ignored or enforced. (default:ignore)--allow-snapd-kernel-mismatchโ whether a mismatch between versions of thesnapdsnap andsnapdin kernel is allowed--assert<filename>โ include the assertion from the local file
๐ quota โ show quota group for a set of snaps
The quota command shows information about a quota group, including the set of snaps and any sub-groups it contains, as well as its resource constraints and the current usage of those constrained resources.
๐ quotas โ show quota groups
The quotas command shows all quota groups.
๐ reboot โ reboot into selected system and mode
The reboot command reboots the system into a particular mode of the selected recovery system.
When called without a system label and without a mode, it just triggers a regular reboot. simple as that.
When called without a label, the current system is used for "run" mode. The default recovery system gets used for "recover", "factory-reset" and "install" modes.
Heads up bestie: the "run" mode is only available for the current system. ๐
Usage: snap [OPTIONS] reboot [reboot-OPTIONS]
--runโ boot into run mode--installโ boot into install mode--recoverโ boot into recover mode--factory-resetโ boot into factory-reset mode
๐๏ธ recovery โ list available recovery systems
The recovery command lists the available recovery systems.
With --show-keys it displays recovery keys that can be used to unlock the encrypted partitions if the device-specific automatic unlocking doesn't work. lowkey a lifesaver ๐ซถ
Usage: snap [OPTIONS] recovery [recovery-OPTIONS]
--color(default:"auto") โ use a little bit of color to highlight some things--unicode(default:"auto") โ use a little bit of Unicode to improve legibility--show-keysโ show recovery keys (if available) to unlock encrypted partitions.
โจ refresh โ refresh snaps in the system
The refresh command updates the specified snaps, or all snaps in the system if you didn't specify any.
With no further options, the snaps get refreshed to the current revision of the channel they're tracking, preserving their confinement options. All available channels of a snap are listed in its 'snap info' output.
When --revision is used, a later refresh will typically undo the revision override. noted. ๐
Hold (--hold) is used to postpone snap refresh updates for all snaps when no snaps are specified, or for the specified snaps.
When no snaps are specified, --hold is only effective on auto-refreshes and will not block either general refresh requests from 'snap refresh' or specific snap requests from 'snap refresh target-snap'.
When snaps are specified, --hold is effective on both their auto-refreshes and general refresh requests from 'snap refresh'. However, specific snap requests from 'snap refresh target-snap' remain unblocked and will proceed.
Usage: snap [OPTIONS] refresh [refresh-OPTIONS]
--color(default:"auto") โ use a little bit of color to highlight some things--unicode(default:"auto") โ use a little bit of Unicode to improve legibility--abs-timeโ display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, thenYYYY-MM-DD.--no-waitโ do not wait for the operation to finish but just print the change id
okay bestie we're still deep in the refresh flag pile and there is so much more where that came from, buckle up ๐
--channelโ use this channel instead ofstable๐--edgeโ install from the edge channel--betaโ install from the beta channel--candidateโ install from the candidate channel--stableโ install from the stable channel--devmodeโ enable development mode, which relaxes confinement for strict snaps, or confirms a devmode snap installation--jailmodeโ put the snap in enforced confinement mode--classicโ confirm installation of a snap that uses classic confinement--amendโ allow a refresh attempt on a snap the store doesn't know about--revisionโ refresh to the given revision--cohortโ refresh the snap into the given cohort--leave-cohortโ refresh the snap out of its cohort--listโ show the new versions of snaps that would be updated with the next refresh--timeโ show auto refresh information but do not actually perform a refresh--ignore-validationโ ignore validation by other snaps that's blocking the refresh--trackingโ show channel tracking information for the provided snaps--transaction <default: "per-snap">โ have one transaction per-snap, or one for all the specified snaps--hold [="forever"]โ hold refreshes for a specified duration (orforever, if no value is specified)--unholdโ remove the refresh hold
remodel ๐
Remodel this device โจ
The remodel command changes the model assertion of the device, either to a new revision or to a full new model. it's giving full identity crisis but make it official ๐ซ
While it's at it, it applies any implied changes to the device too: new required snaps, new kernel or gadget, etc.
Snaps and assertions are downloaded from the store unless they're provided as local files specified by the --snap and --assertion options. and if you do use those options, it's expected that all the needed snaps and assertions are provided locally โ otherwise the remodel will fail. no cap ๐ญ
Usage:
snap [OPTIONS] remodel [remodel-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id--snapโ use one or more locally available snaps--assertionโ use one or more locally available assertion files--offlineโ use only pre-installed and locally provided snaps and assertions. providing any snaps or assertions locally implies--offline
remove ๐๏ธ
Remove snaps from the system
The remove command removes the named snap instance from the system.
By default, all the snap revisions get removed, including their data and the common data directory. But when a --revision option is passed, only the specified revision gets removed.
Unless automatic snapshots are disabled, a snapshot of all data for the snap is saved upon removal, which is then available for future restoration with snap restore. The --purge option disables automatically creating snapshots.
Usage:
snap [OPTIONS] remove [remove-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id--revisionโ remove only the given revision--purgeโ remove the snap without saving a snapshot of its data--terminateโ terminate running processes associated with a snap before removal
remove-quota ๐งฎ
Remove quota group
The remove-quota command removes the given quota group.
Currently, only quota groups with no sub-groups can be removed. To remove a quota group that has sub-groups, you have to remove the sub-groups first, one by one, until there are no sub-groups left for the group โ then the group itself can be removed. it's giving "you can't unfriend the group chat while people are still in it" ๐
Usage:
snap [OPTIONS] remove-quota [remove-quota-OPTIONS]
--no-wait
report-issue ๐ฃ
Show contact information and optionally navigate to relevant issue tracker
The report-issue command helps with reporting a problem with a snap by listing available contact information provided by the snap's publisher, and optionally it opens the issue reporting link in the user's web browser. bestie said "take it up with the publisher" and honestly, valid ๐
restart ๐
Restart services
The restart command restarts the given services.
If the --reload option is given, then for each service whose app has a reload command, a reload is performed instead of a restart.
Usage:
snap [OPTIONS] restart [restart-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id--systemโ the operation should only affect system services--userโ the operation should only affect user services for the current user--usersโ if provided and set to'all', the operation should affect services for all users--reloadโ if the service has a reload command, use it instead of restarting
restore ๐ซถ
Restore a snapshot
The restore command replaces the current user, system and configuration data of the included snaps with the corresponding data from the specified snapshot.
By default, this command restores all the data in a snapshot. Alternatively you can specify the data of which snaps to restore, or for which users, or a combination of the two.
Heads up: if a snap is included in a restore operation, excluding its system and configuration data from the restore is not currently possible. This restriction may be lifted in the future, so likeโฆ watch this space ๐
Usage:
snap [OPTIONS] restore [restore-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id--usersโ restore data of only specific users (comma-separated) (default: all users)
revert โช
Reverts the given snap to the previous state
The revert command reverts the given snap to its state before the latest refresh. That means it reactivates the previous snap revision, and it uses the original data that was associated with that revision โ discarding any data changes that were done by the latest revision. ๐ญ
As an exception, data which the snap explicitly chooses to share across revisions is not touched by the revert process.
Usage:
snap [OPTIONS] revert [revert-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id--devmodeโ enable development mode, relaxing confinement for strict snaps or confirming devmode snap installation--jailmodeโ put snap in enforced confinement mode--classicโ confirm installation of a snap that uses classic confinement--revisionโ revert to the given revision
run ๐โโ๏ธ
Run the given snap command
The run command executes the given snap command with the right confinement and environment. it's literally the main character of this whole operation ๐
Usage:
snap [OPTIONS] run [run-OPTIONS]
--shellโ run a shell instead of the command (useful for debugging)--debug-logโ enable debug logging during early snap startup phases--strace [="with-strace"] <default: "no-strace">โ run the command understrace(useful for debugging). extra strace options can be specified here as well. pass--rawto strace early snap helpers.--gdbserver [=":0"] <default: "no-gdbserver">โ run the command withgdbserver--trace-execโ display exec calls timing data
save ๐พ
Save a snapshot of the current data
The save command creates a snapshot of the current user, system and configuration data for the given snaps.
By default, this command saves the data of all snaps for all users. Alternatively you can specify the data of which snaps to save, or for which users, or a combination of the two.
Same caveat as its bestie restore: if a snap is included in a save operation, excluding its system and configuration data from the snapshot is not currently possible. This restriction may be lifted in the future. ๐
Usage:
snap [OPTIONS] save [save-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id--abs-timeโ display absolute times (in RFC 3339 format). otherwise, display short relative times.--usersโ snapshot data of only specific users (comma-separated) (default: all users)
saved ๐ธ
List currently stored snapshots
The saved command displays a list of snapshots that have been created previously with the 'save' command.
Usage:
snap [OPTIONS] saved [saved-OPTIONS]
--abs-timeโ display absolute times (in RFC 3339 format). otherwise, display short relative times.--idโ show only a specific snapshot.
services ๐๏ธ
Query the status of services
The services command lists information about the services specified, or about the services in all currently installed snaps.
If executed as root, the 'Startup' column of any user service will be whether it's globally enabled (i.e. systemctl is-enabled). To view the actual 'Startup'|'Current' status of the user services for the root user itself, --user can be provided.
If executed as a non-root user, the 'Startup'|'Current' status of user services will be the current status for the invoking user. To view the global enablement status of user services, --global can be provided.
Usage:
snap [OPTIONS] services [services-OPTIONS]
-g,--globalโ show the global enable status for user services instead of the status for the current user-u,--userโ show the current status of the user services instead of the global enable status
set โ๏ธ
Change configuration options
The set command changes the provided configuration options as requested.
$ snap set snap-name username=frank password=$PASSWORD
All configuration changes are persisted at once, and only after the snap's configuration hook returns successfully. no half-sends, it's all or nothing ๐
Nested values may be modified via a dotted path:
$ snap set snap-name author.name=frank
Configuration option may be unset with exclamation mark:
$ snap set snap-name author!
Usage:
snap [OPTIONS] set [set-OPTIONS]
--no-waitโ do not wait for the operation to finish, just print the change id-tโ parse the value strictly as a JSON document-sโ parse the value as a string--wait-forโ maximum duration to wait for confdb access (e.g.10s)
set-quota ๐งฎ
Create or update a quota group.
The set-quota command updates or creates a quota group with the specified set of snaps.
A quota group sets resource limits on the set of snaps or snap services it contains. Snaps can be in at most one quota group, but quota groups can be nested. Nested quota groups are subject to the restriction that the total sum of each existing quota in sub-groups cannot exceed that of the parent group the nested groups are part of.
All provided snaps are appended to the group; to remove a snap from a quota group, the entire group must be removed with remove-quota and recreated without the snap. To remove a sub-group from the quota group, the sub-group must be removed directly with the remove-quota command. no shortcuts bestie, the group is a package deal ๐
To set limits on individual services, one or more services can be placed into a sub-group. The respective snap for each service must belong to the sub-group's parent group. These sub-groups will have the same limitations as nested groups which means their combined resource usage cannot exceed the resource limits set for the parent group. Sub-groups which contain services cannot have their own journal quotas set, and instead automatically inherit any journal quota their parent quota group may have. โจ so they're literally just vibing off mom's quota โจ
The memory limit for a quota group can be increased but not decreased. To decrease the memory limit for a quota group, the entire group must be removed with the remove-quota command and recreated with a lower limit. Increasing the memory limit for a quota group does not restart any services associated with snaps in the quota group. memory goes up only โ no take-backs ๐
The CPU limit for a quota group can be both increased and decreased after being set on a quota group. The CPU limit can be specified as a single percentage which means that the quota group is allowed an overall percentage of the CPU resources. Setting it to 50% means that the quota group is allowed to use up to 50% of all CPU cores in the allowed CPU set. Setting the percentage to 2x100% means that the quota group is allowed up to 100% on two cpu cores. cpu is the flexible one, she can go up AND down, we love range ๐
The CPU set limit for a quota group can be modified to include new cpus, or to remove existing cpus from the quota already set.
The threads limit for a quota group can be increased but not decreased. To decrease the threads limit for a quota group, the entire group must be removed with the remove-quota command and recreated with a lower limit. threads: up only, same energy as memory ๐ญ
The journal limits can be increased and decreased after being set on a group. Setting a journal limit will cause the snaps in the group to be put into the same journal namespace. This will affect the behaviour of the log command. heads up, this one changes how log behaves, iykyk
New quotas can be set on existing quota groups, but existing quotas cannot be removed from a quota group, without removing and recreating the entire group.
Adding new snaps to a quota group will result in all non-disabled services in that snap being restarted.
An existing sub group cannot be moved from one parent to another. no custody battles allowed, periodt
snap [OPTIONS] set-quota [set-quota-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id. fire and forget energy--memory[=] โ memory quota as<number><unit>(e.g.64MB,1GB)--cpu[=] โ CPU quota as<percentage>%or<count>x<percentage>%(e.g.50%,2x100%)--cpu-set[=] โ CPU set quota as comma-separated list of CPU core indices (e.g.0,1,3)--threads[=] โ threads quota as a positive integer (e.g.512)--journal-size[=] โ journal size quota as<number><unit>(e.g.16MB)--journal-rate-limit[=] โ journal rate limit as<message count>/<message period>(e.g.100/1s,1000/1m)--parent[=] โ parent quota group
๐ sign ๐
Sign an assertion
The sign command signs an assertion using the specified key, using the input for headers from a JSON mapping provided through stdin. The body of the assertion can be specified through a "body" pseudo-header. โจ digital signature but make it cute โจ
snap [OPTIONS] sign [sign-OPTIONS]
-k<default: "default">โ name of the key to use, otherwise use the default key--chainโ append the account and account-key assertions necessary to allow any device to validate the signed assertion. brings receipts ๐งพ--update-timestampโ update the output"timestamp"header to the current time
๐ธ start ๐ธ
Start services
The start command starts, and optionally enables, the given services. let's get this party started fr fr
snap [OPTIONS] start [start-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id.--systemโ the operation should only affect system services.--userโ the operation should only affect user services for the current user.--usersโ if provided and set to'all', the operation should affect services for all users.--enableโ as well as starting the service now, arrange for it to be started on boot.
๐ stop ๐
Stop services
The stop command stops, and optionally disables, the given services. everyone go home โ
snap [OPTIONS] stop [stop-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id.--systemโ the operation should only affect system services.--userโ the operation should only affect user services for the current user.--usersโ if provided and set to'all', the operation should affect services for all users.--disableโ as well as stopping the service now, arrange for it to no longer be started on boot.
๐ฆ switch ๐ฆ
Switches snap to a different channel
The switch command switches the given snap to a different channel without doing a refresh. All available channels of a snap are listed in its 'snap info' output. channel change, no refresh required, slay
snap [OPTIONS] switch [switch-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id.--channelโ use this channel instead ofstable--edgeโ install from the edge channel--betaโ install from the beta channel--candidateโ install from the candidate channel--stableโ install from the stable channel--cohortโ switch the snap into the given cohort--leave-cohortโ switch the snap out of its cohort
โญ tasks โญ
List a change's tasks
The tasks command displays a summary of tasks associated with an individual change.
snap [OPTIONS] tasks [tasks-OPTIONS]
Aliases: change
--abs-timeโ display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, thenYYYY-MM-DD.--lastโ select last change of given type (install,refresh,remove,try,auto-refresh, etc.). A question mark at the end of the type means to do nothing (instead of returning an error) if no change of the given type is found. Note the question mark could need protecting from the shell. shell will absolutely eat that?if you don't protect it, protect the?๐--format<default: "text">โ output format
๐ง try ๐ง
Test an unpacked snap in the system
The try command installs an unpacked snap into the system for testing purposes. The unpacked snap content continues to be used even after installation, so non-metadata changes there go live instantly. Metadata changes such as those performed in snap.yaml will require reinstallation to go live. live edits?? in THIS economy?? yes bestie
If snap-dir argument is omitted, the try command will attempt to infer it if either snapcraft.yaml file and prime directory or meta/snap.yaml file can be found relative to current working directory.
snap [OPTIONS] try [try-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id.--devmodeโ enable development mode, relaxing confinement for strict snaps or confirming devmode snap installation--jailmodeโ put snap in enforced confinement mode--classicโ confirm installation of a snap that uses classic confinement
๐ unalias ๐
Remove a manual alias, or the aliases for an entire snap
The unalias command removes a single alias if the provided argument is a manual alias, or disables all aliases of a snap, including manual ones, if the argument is a snap name.
snap [OPTIONS] unalias [unalias-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id.
๐ unset ๐
Remove configuration options
The unset command removes the provided configuration options as requested.
$ snap unset snap-name name address
All configuration changes are persisted at once, and only after the snap's configuration hook returns successfully.
Nested values may be removed via a dotted path:
$ snap unset snap-name user.name
snap [OPTIONS] unset [unset-OPTIONS]
--no-waitโ do not wait for the operation to finish but just print the change id.--wait-forโ maximum duration to wait for confdb access (e.g.10s)
๐ validate ๐
List or apply validation sets
The validate command lists or applies validation sets that state which snaps are required or permitted to be installed together, optionally constrained to fixed revisions. the friend group rules, basically
A validation set can either be in monitoring mode, in which case its constraints aren't enforced, or in enforcing mode, in which case snapd will not allow operations which would result in snaps breaking the validation set's constraints. enforcing mode does NOT play, bestie
snap [OPTIONS] validate [validate-OPTIONS]
--monitorโ monitor the given validations set--enforceโ enforce the given validation set--forgetโ forget the given validation set--refreshโ refresh or install snaps to satisfy enforced validation sets--color<default: "auto">โ use a little bit of color to highlight some things.--unicode<default: "auto">โ use a little bit of Unicode to improve legibility.--no-waitโ do not wait for the operation to finish but just print the change id.
๐ version ๐
Show version details
The version command displays the versions of the running client, server, and operating system.
snap [OPTIONS] version [version-OPTIONS]
--verboseโ show verbose output
โจ wait โจ
Wait for configuration
The wait command waits until a configuration becomes true. just. sit. there. until it's true. manifesting ๐ฏ๏ธ
๐ซถ warnings ๐ซถ
List warnings
The warnings command lists the warnings that have been reported to the system.
Once warnings have been listed with 'snap warnings', 'snap okay' may be used to silence them. A warning that's been silenced in this way will not be listed again unless it happens again, and a cooldown time has passed.
Warnings expire automatically, and once expired they are forgotten. gone. deleted. never happened.
snap [OPTIONS] warnings [warnings-OPTIONS]
--abs-timeโ display absolute times (in RFC 3339 format). Otherwise, display relative times up to 60 days, thenYYYY-MM-DD.--unicode<default: "auto">โ use a little bit of Unicode to improve legibility.--allโ show all warnings--verboseโ show more information
๐ฅ watch ๐ฅ
Watch a change in progress
The watch command waits for the given change-id to finish and shows progress (if available). It's giving "loading screen but make it โจinformativeโจ" โ you just sit there and vibe while snap tells you how it's going, whenever it has something to tell you.
Usage:
snap [OPTIONS] watch [watch-OPTIONS]
--lastโ selects the last change of a given type (install,refresh,remove,try,auto-refresh, etc.). Bestie, listen: if you slap a question mark?at the end of the type, it does nothing instead of throwing an error when no change of that type is found. Chill behaviour, honestly. But heads up โ that question mark might need protecting from the shell, so quote it or the shell will do shell things to it. ๐
whoami
Show the email the user is logged in with.
The whoami command shows the email the user is logged in with. That's it. That's the whole thing. It's the "who am I, really?" of snap commands and honestly? Relatable. ๐ชโจ
๐ NOTES
- Online documentation โ https://docs.snapcraft.io
Go read the docs, bestie, they're right there and they're free. ๐ซถ
๐ BUGS
Please report all bugs with https://bugs.launchpad.net/snapd/+filebug
Found a bug? Don't just suffer in silence, go tell the maintainers โ they genuinely want to know, no cap. ๐
And that's a wrap on snap(8), the September 2026 edition (dated 02 September 2026, for the record ๐
). Thanks for reading all six parts, you absolute legend โ go forth and snap responsibly. ๐๐
๐ฆ where this page comes from
- ubuntu jammy: snapd 2.77.1+ubuntu22.04.1 ยท GPL-3.0-only
- ubuntu noble: snapd 2.77.1+ubuntu24.04 ยท GPL-3.0-only
- ubuntu resolute: snapd 2.77.1+ubuntu26.04.2 ยท GPL-3.0-only
- ubuntu stonking: snapd 2.77.1+ubuntu26.10.1 ยท GPL-3.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms