self
Self-management commands for the CLI
The self command provides subcommands for managing the squirrel CLI itself: installation, updates, diagnostics, and settings.
Subcommands
- install - Bootstrap local installation
- update - Check and apply updates
- completion - Generate shell completions
- doctor - Run health checks
- version - Show version information
- settings - Manage CLI settings
- uninstall - Remove squirrel from system
install
Bootstrap the local installation by creating necessary directories and symlinking the binary.
Usage
squirrel self installOptions
| Option | Description |
|---|---|
--bin-dir | Custom bin directory for symlink (default: ~/.local/bin) |
Output
Installed v0.1.0
Binary: ~/.local/share/squirrel/releases/0.1.0/squirrel
Symlink: ~/.local/bin/squirrel
If ~/.local/bin is not in your $PATH, the command will show:
Add to your shell profile:
export PATH="~/.local/bin:$PATH"
What it Does
- Creates
~/.squirrel/for settings - Creates
~/.local/share/squirrel/releases/for cached releases - Creates symlink at
~/.local/bin/squirrel - Registers installation for update checks
update
Check for and apply updates to the CLI.
Automatic updates
You usually don’t need this command. With auto_update enabled (the default), squirrel updates itself: any CLI run checks for a new release in the background (at most hourly), and when one is found a detached background process downloads it, verifies its SHA-256 checksum, and switches over silently. Your next run prints a one-line notice:
✓ squirrel auto-updated v0.0.42 → v0.0.43
The running process is never interrupted - the new version takes effect on the next run. Turn this off with:
squirrel self settings set auto_update falseWith auto-update off you still get an update notification box (unless notifications is also off), and squirrel self update applies updates manually.
Automatic updates only run for managed installs (installed via the install script, npm, or self install). If you copied the binary somewhere yourself, squirrel tells you how to update instead of touching your setup.
Usage
squirrel self update [options]Options
| Option | Description |
|---|---|
--check | Only check for updates, don’t install |
--dismiss | Dismiss update notification for current version |
--force | Update even if this binary isn’t a managed install |
Examples
Check for Updates
squirrel self update --checkOutput if update available:
Update available: v0.2.0
Run 'squirrel self update' to install
Output if up to date:
Already on latest version (0.1.0)
Install Update
squirrel self updateOutput:
Updated to v0.2.0
See release notes: https://github.com/squirrelscan/repo/releases/tag/v0.2.0
Dismiss Update Notification
squirrel self update --dismissThis dismisses the update notification until the next version is released. A dismissed version is also skipped by automatic updates.
Update Channels
squirrel has two update channels configured via settings:
stable- Production releases (recommended)beta- Pre-release versions with latest features
Change channel:
squirrel self settings set channel betacompletion
Generate shell completion scripts for bash, zsh, or fish.
Usage
squirrel self completion <shell>Arguments
| Argument | Description |
|---|---|
shell | Shell type: bash, zsh, or fish (required) |
Examples
Bash
Add to ~/.bashrc:
eval "$(squirrel self completion bash)"Zsh
Add to ~/.zshrc:
eval "$(squirrel self completion zsh)"Fish
Add to ~/.config/fish/config.fish:
squirrel self completion fish | sourceWhat it Provides
Completions include:
- Command names
- Subcommand names
- Option flags
- File paths for relevant arguments
doctor
Run health checks on your installation.
Usage
squirrel self doctorOutput
Running health checks...
[OK] Binary: Executable found at ~/.local/bin/squirrel
[OK] Version: 0.1.0
[OK] Permissions: Binary is executable
[OK] Config: Valid squirrel.toml found
[WARN] Cache: 125MB of cached data at ~/.local/share/squirrel
[OK] Settings: Valid settings at ~/.squirrel/settings.json
Passed: 5 | Warnings: 1 | Failed: 0
What it Checks
- Binary installation and permissions
- Config file validity
- Settings file validity
- Cache size and location
- Update status
Exit Codes
| Code | Meaning |
|---|---|
0 | All checks passed (warnings are OK) |
1 | One or more checks failed |
version
Show version information about the CLI.
Usage
squirrel self version [options]Options
| Option | Description |
|---|---|
--json | Output as JSON |
Examples
Human-Readable
squirrel self versionOutput:
squirrel v0.1.0
Channel: stable
Platform: darwin-arm64
Bun: 1.1.38
JSON Output
squirrel self version --jsonOutput:
{
"version": "0.1.0",
"channel": "stable",
"platform": "darwin-arm64",
"bun_version": "1.1.38"
}settings
Manage CLI settings stored at ~/.squirrel/settings.json or .squirrel/settings.json (local project).
Subcommands
show- Display settingsset- Update a setting
settings show
Display current settings.
Usage
squirrel self settings show [options]Options
| Option | Description |
|---|---|
--user | Show only user settings (~/.squirrel/settings.json) |
--local | Show only local project settings (.squirrel/settings.json) |
Examples
Effective Settings (default)
Shows merged settings with source tracking:
squirrel self settings showOutput:
Effective Settings:
channel = stable (default)
auto_update = true (user)
notifications = true (local)
log_level = info (default) (read-only)
User: ~/.squirrel/settings.json
Local: /path/to/project/.squirrel/settings.json
User Settings Only
squirrel self settings show --userOutput:
User Settings (~/.squirrel/settings.json):
channel = stable
auto_update = true
user_feedback_email = you@example.com
Local Settings Only
squirrel self settings show --localOutput:
Local Settings (/path/to/project/.squirrel/settings.json):
notifications = false
settings set
Update a setting value.
Usage
squirrel self settings set <key> <value> [options]Arguments
| Argument | Description |
|---|---|
key | Setting key (required) |
value | New value (required) |
Options
| Option | Description |
|---|---|
--local | Set in local project settings (.squirrel/settings.json) |
--user | Set in user settings (~/.squirrel/settings.json) (default) |
Available Settings
| Key | Type | Description | Values |
|---|---|---|---|
channel | string | Update channel | stable, beta |
auto_update | boolean | Automatic background updates | true, false |
notifications | boolean | Show update notifications | true, false |
Examples
Switch to Beta Channel
squirrel self settings set channel betaOutput:
Set channel = beta (user)
Written to: ~/.squirrel/settings.json
Disable Update Notifications
squirrel self settings set notifications falseSet Local Project Setting
squirrel self settings set notifications false --localThis creates .squirrel/settings.json in the current directory and sets the value there.
uninstall
Remove squirrel from your system.
Usage
squirrel self uninstall [options]Options
| Option | Description |
|---|---|
--purge | Also remove user settings |
--force | Skip confirmation prompt |
Examples
Interactive Uninstall
squirrel self uninstallOutput:
This will remove:
- Symlink at ~/.local/bin/squirrel
- Cached releases at ~/.local/share/squirrel
User settings at ~/.squirrel/settings.json will be preserved.
Use --purge to also remove settings.
Continue? [y/N]
Uninstall with Settings
squirrel self uninstall --purgeThis removes:
- Binary symlink
- Cached releases
- User settings
Force Uninstall (No Prompt)
squirrel self uninstall --forceWhat Gets Removed
| Item | Default | With —purge |
|---|---|---|
Binary symlink (~/.local/bin/squirrel) | ✓ | ✓ |
Cached releases (~/.local/share/squirrel/) | ✓ | ✓ |
User settings (~/.squirrel/) | ✗ | ✓ |
Project configs (squirrel.toml) | ✗ | ✗ |
Audit database (~/.local/share/squirrel/audits.db) | ✓ | ✓ |
Related
- Configuration - Project config file options
- CLI Reference - All CLI commands