Skip to content

Full command reference

The complete command surface. For day-to-day commands only, see Core commands. For navigation specifically, see Navigation.

Stack operations

Command Alias Description
st status s, ls Show stack
st ll Show stack with PR URLs and full details
st log l Show stack with commits and PR info
st submit ss Submit full current stack
st merge Cascade-merge from bottom to current (see flags below)
st merge-when-ready mwr Backward-compatible alias for st merge --when-ready
st sync rs Pull trunk, delete merged branches (incl. squash merges), reparent children
st sync --restack rs --restack sync plus rebase current stack onto updated parents
st sync --delete-upstream-gone Also delete local branches whose upstream tracking ref is gone
st sweep Classify all local branches as merged / upstream-gone / stale / active (read-only by default)
st sweep --delete Delete merged branches and upstream-gone branches with no unique work after confirmation
st sweep --delete --include-stale Also delete stale branches (older than --stale-days / branch.stale_days config key)
st sweep --delete --force Skip confirmation prompt
st sweep --stale-days <N> Override stale threshold in days (default: 30)
st sweep --json Machine-readable branch classification (conflicts with --delete)
st update Sync trunk without merged-branch cleanup, restack, then push and create/update PRs for the current stack
st update --force --yes --no-prompt Run the full update flow without sync or submit prompts
st update --verbose Same as st update, with detailed sync/restack/submit timing
st restack Rebase current stack locally — auto-normalizes missing/merged parents; --stop-here limits scope
st cascade Restack from bottom and submit updates
st diff Show per-branch diffs vs parent
st range-diff Show range-diff for branches needing restack

st merge variants

  • st merge — local cascade merge with provenance-aware descendant rebases, then st rs --force unless --no-sync
  • st merge --when-ready — wait for CI + approvals + mergeability; incompatible with --dry-run, --no-wait, --remote
  • st merge --downstack-only / --ds — merge ancestors below the current branch, then rebase the current branch onto trunk; incompatible with --all, --remote, and --queue
  • st merge --remote — merge entirely via GitHub API, no local git operations (GitHub only)
  • st merge --queue — enqueue PRs into GitHub merge queue / GitLab merge trains

See also: Merge and cascade

Command Alias Description
st checkout co, bco Interactive branch picker
st trunk t Switch to trunk (or set trunk with st trunk <branch>)
st up [n] u Move up to child
st down [n] d Move down to parent
st top Stack tip
st bottom Stack base
st prev p Toggle to previous branch

Branch management

Command Alias Description
st create <name> c, add, bc Create stacked branch (TTY menu when nothing staged and -m)
st create --ai Generate a branch name from local changes (-a also generates a first commit message)
st create <name> --below Insert a new branch below current
st get <branch> Fetch, checkout, and track a remote branch
st modify m Amend staged changes into current commit (-a stages all, -r restacks after)
st rename Rename current branch
st branch track Track an existing branch
st branch track --all-prs Track all open PRs (GitHub, GitLab, Gitea)
st branch untrack ut Remove stax metadata
st branch reparent Change parent
st branch submit bs Submit current branch only
st branch delete Delete branch
st fold / st branch fold b f Fold current branch into its parent (preserves commits, reparents descendants, rebases siblings; --keep keeps current name)
st branch squash Squash commits
st detach Remove branch from stack, reparent children
st reorder Interactively reorder branches in stack
st absorb Distribute staged changes to the correct stack branches (file-level)

Up/down scopes

Command Description
st upstack restack Restack current + descendants
st upstack onto [branch] Reparent current + descendants onto a new parent
st upstack submit Submit current + descendants
st downstack get Show branches below current
st downstack submit Submit ancestors + current

Interactive modes

Command Description
st Launch the TUI
st split Split branch into stacked branches (commit-based; needs 2+ commits)
st split --hunk Split a single commit by selecting individual diff hunks
st split --file <pathspec> Split by extracting matching files into a new parent branch
st edit · e Interactively edit commits (pick, reword, squash, fixup, drop)

Recovery

Command Description
st resolve AI-resolve an in-progress rebase conflict
st abort Abort the in-progress rebase / conflict resolution
st undo Undo the last operation
st undo <op-id> Undo a specific operation
st redo Re-apply the last undone operation

Health and testing

Command Description
st validate Check stack metadata for orphans, cycles, and staleness
st fix Auto-repair broken metadata (--dry-run previews)
st run <cmd> Run a command on each branch (alias: st test); --stack[=<branch>], --all, --fail-fast

CI, PRs, and reporting

Command Description
st ci CI status for current branch — full per-check table (with elapsed/ETA learned from recent runs)
st ci --stack / --all Scope to stack / all tracked branches; multi-branch views default to the one-line roll-up
st ci --oneline / -1 One compact line per branch (icon · branch · #PR · draft/ready · title · checks + timing)
st ci --watch Watch modes (--watch --strict fail-fasts on failure)
st ci -w --alert / --alert <file> / --no-alert Success/error completion sounds for watch mode
st ci --verbose / --json Grouped summary cards · JSON output
st pr · st pr open Open current branch PR
st pr body · st pr body --edit Print or edit the current branch PR description
st pr list List open PRs (GitHub, GitLab, Gitea)
st pr list --ready Open live PR readiness for all tracked branch PRs, newest changed PR first (--current/--stack limits to the current stack, --plain prints a table)
st ready Short alias for st pr list --ready (--current, --stack, --all, --plain, --json)
st issue list List open issues
st comments Show PR comments
st copy · st copy --pr Copy branch name · PR URL
st standup Recent activity (--ai for AI spoken version; --jit for Jira context)
st changelog [from] [to] Generate changelog (auto-resolves last tag when from omitted)
st changelog find [query] Fuzzy-find commits in the selected changelog range
st changelog --find [query] Flag form of commit fuzzy-find
st generate · st gen AI generation: interactive picker, or --pr-body / --pr-title / --commit-msg
st ss --ai Submit with AI-generated PR title/body suggestions

Utilities

Command Description
st auth Configure GitHub token (--from-gh, --token <token>, status)
st config Show current configuration
st config --set-ai Interactively set AI agent/model (global or per-feature)
st config --reset-ai Clear saved AI defaults and re-prompt (--no-prompt to clear only)
st init Initialize stax or reconfigure trunk (--trunk <branch>)
st cli upgrade Detect install method and run the matching upgrade
st doctor Check repo health
st doctor --fix Apply safe local repairs after one confirmation (recommended Git config and stale AI skills)
st continue Continue after conflicts
st open Open repository in browser
st demo Interactive tutorial — no auth or repo required

Worktrees

Full guide: Worktrees · AI lanes

Command Aliases Description
st worktree wt Open the interactive dashboard (TTY only)
st worktree create [name] wt c, wtc Create or reuse a lane (random name if omitted)
st lane [name] [prompt] AI-lane entrypoint; bare st lane opens a picker
st worktree list wt ls, w, wtls List all worktrees
st worktree ll wt ll Rich status view
st worktree go [name] wt go, wtgo Navigate to a worktree (shell integration required for cd)
st worktree path <name> Print absolute path (scripting)
st worktree remove [name] wt rm, wtrm Remove a worktree (wt rm removes the current lane)
st worktree prune wt prune, wtprune Clean stale git worktree bookkeeping
st worktree cleanup wt cleanup, wt clean Prune + remove safe detached/merged lanes (--dry-run previews)
st worktree restack wt rs, wtrs Restack all stax-managed worktrees

st setup

Command Description
st setup One-shot onboarding: shell integration + optional skills + auth
st setup --yes Accept defaults, install skills, import auth from gh when available
st setup --install-skills / --skip-skills Control AI agent skills prompt
st setup --auth-from-gh / --skip-auth Control auth onboarding
st setup --print Print shell integration snippet for manual install

Lane launch examples

st lane
st lane review-pass "address PR comments"
st lane fix-flaky --agent claude --yolo "stabilize the flaky tests"
st lane big-refactor --agent claude --agent-arg=--verbose "split the auth module"
st wt go ui-polish --run "cursor ." --tmux

Flags by command

st modify

  • -a stage all and amend
  • -am "msg" stage all and amend with a new message
  • -r restack after amending
  • -ar stage all, amend, restack
  • With nothing staged in a TTY: menu to stage all, --patch, amend message only, or abort

st create

  • st add <name> is an alias for st create <name>
  • -m "msg" set commit message (with nothing staged in a TTY: menu for stage all, --patch, empty branch, or abort)
  • -am "msg" stage all and commit
  • --ai generate missing branch name and/or first commit message from local changes
  • --ai -a --yes stage all changes, generate branch name + commit message, and skip AI value review prompts
  • st create <name> --ai -a keeps <name> and generates the first commit message
  • st create --ai -m "msg" keeps the commit message and generates the branch name
  • -n, --no-verify skip pre-commit and commit-msg hooks when creating a commit
  • -m / -am create the commit before creating the destination branch, including with --from and --below, so hook failures or interrupts do not leave orphan branches
  • -m / --ai derived branch names refuse collisions instead of creating -2 duplicates; pass an explicit different name or checkout/reparent the existing branch
  • --insert reparent children of the current branch onto the new branch
  • --below create from the current branch's parent and reparent the current branch onto the new branch; prepared tracked and untracked changes are auto-stashed and reapplied onto the new lower branch, and -m/-am commits staged changes there
  • st branch create --message "msg" --prefix feature/

Prepared-work --below example:

# On an upstack branch, after editing a CVE hotfix that belongs lower down:
st create cve-hotfix --below

# Or commit it immediately on the inserted lower branch:
st create --below -am "fix: patch CVE-2026-0001"

If the stash cannot apply cleanly while committing below, Stax restores the original branch and prepared changes so the same command can be retried after resolving the conflict. For name-only --below, the inserted branch is left in place and the auto-stash remains available for a manual git stash apply.

st status / st ll / st log

  • --stack <branch> · --current · --compact · --json · --quiet

st submit

  • --draft / --publish / --no-pr / --no-fetch / --no-verify / --open / --quiet / --verbose
  • --no-verify (-n) skips pre-push hooks while pushing branches
  • --reviewers alice,bob --labels bug,urgent --assignees alice
  • --squash squash commits on each branch before pushing
  • --ai generate PR title and body with AI; narrow with --title or --body
  • --template <name> / --no-template / --edit
  • --rerequest-review / --update-title
  • --yes / --no-prompt

Config: [submit] stack_links = "comment" | "body" | "both" | "off" in ~/.config/stax/config.toml.

st merge

  • --dry-run / --yes
  • --all / --downstack-only (--ds) / --method squash|merge|rebase
  • --when-ready · --when-ready --interval 10
  • --remote · --remote --all · --remote --timeout 60 --interval 10
  • --queue · --queue --all --yes
  • --no-wait / --no-sync / --no-delete / --timeout 60 / --quiet

st sync / st rs

  • --restack · --restack --auto-stash-pop
  • --delete-upstream-gone
  • --force / --safe / --continue / --quiet / --verbose

st restack

  • --all / --continue / --quiet
  • --stop-here
  • --submit-after ask|yes|no

st resolve

  • --agent codex --model gpt-5.3-codex --max-rounds 5

st cascade

  • --no-pr / --no-submit / --auto-stash-pop

st checkout

  • --trunk / --parent / --child 1

st get

  • --parent <branch> records a non-trunk parent in stax metadata
  • --no-checkout fetches and tracks without switching branches
  • --force resets an existing divergent local branch to the remote tip

st ci

  • --stack / --all / --oneline (-1) / --verbose / --watch / --watch --strict / --interval 30 / --json
  • Three render modes: the full per-check table (single branch, default), grouped summary cards (--verbose/-v), and the one-line roll-up (--oneline/-1). Any multi-branch view (--stack/--all) defaults to the roll-up; --verbose overrides it back to cards. --oneline and --verbose cannot be combined.
  • The roll-up renders one line per branch, base→tip: CI status icon · branch · #PR · draft/ready · PR title · trailing check-count and timing. A bare --oneline defaults its scope to the current stack.
  • By default, --watch waits until every check is terminal, even if one check has already failed. Add --strict to exit as soon as any check fails.
  • --watch --alert plays built-in success/error sounds; --watch --alert <file> uses one custom sound for either outcome; --watch --no-alert suppresses [ci] alert = true for one run.
  • Config can enable alerts by default with [ci] alert = true; set success_alert_sound and/or error_alert_sound to override the per-outcome built-in sounds.

st standup

  • --all / --hours 48 / --json
  • --ai · --ai --agent claude · --ai --hours 48
  • --ai --style slack
  • --ai --plain-text / --ai --json / --ai --jit

st pr / st issue

  • st pr list --limit 50 --json
  • st issue list --limit 50 --json

st generate · st gen

  • Bare st gen opens an interactive picker (PR body, PR title, commit message).
  • --pr-body — refresh the open PR body from the branch diff (PR templates: --template / --no-template).
  • --pr-title — refresh the open PR title from the branch diff.
  • --commit-msg — amend HEAD with an AI-generated message from the last commit’s patch.
  • Shared: --no-prompt / --edit / --agent <name> / --model <name> (--model requires --agent).

st changelog

  • --tag-prefix release/ios
  • --path src/
  • find [query] / search [query] — fuzzy-find commits in the selected range; omit query for an interactive picker.
  • --find [query] / --search [query] — flag form of the same fuzzy finder.
  • --json

st auth

  • --from-gh / --token <token> / status

st init

  • --trunk main

st undo / st redo

  • --yes / --no-push / --quiet

st absorb

  • --dry-run (preview) · -a (stage all first)

st edit

  • --yes (skip final confirmation) · --no-verify (skip pre-commit hooks)

st split

  • --file <pathspec> (or -f "src/api/*" with glob support)
  • --hunk (single-commit hunk-based split)