Commands

The CLI is authoritative for exact flags: run imp <command> --help. This page is the reference for what each command does, with a terminal recording of each one. Reach for the table first to find the verb, then jump to its entry.

WorkflowCommands
Compose changescommit, split, amend, fixup, undo, revert
Inspect workstatus, log, explain, review, standup
Branch and mergebranch, merge, resolve, done, clean, worktree
Synchronizepull, push, sync, stash
GitHub issues and PRsfix, pr
Releasechangelog, tag, release, ship, fleet, version
Recover and rewriterescue, tidy
Set upinit, setup, config, docs, doctor, update, help

AI-backed commands accept --whisper (-w) for task-specific context, and --yes (-y) to run non-interactively (CI, agents).

Compose changes

commit

Read the staged diff and write a Conventional Commits message, then commit. Use -a to stage everything first, --exclude to leave globs out, --push to push after.

imp commit

split

Group a dirty working tree into several logical commits — one AI-authored message per group — instead of one catch-all commit. Every changed file lands in exactly one commit.

imp split

amend

Fold the staged changes into the last commit and regenerate its message from the combined diff.

imp amend

fixup

Work out which recent commit a staged hunk belongs to and autosquash it in, so a follow-up fix rejoins the commit it corrects instead of trailing behind it.

imp fixup

undo

Undo the last N commits while keeping their changes in the working tree — a soft reset you can inspect before recommitting.

imp undo

revert

Safely reverse an already-pushed commit with a new revert commit and an AI-written message, leaving history intact.

imp revert

Inspect work

status

A compact overview of the working tree: branch, staged and unstaged changes, and how far ahead or behind the upstream sits.

imp status

log

A pretty, decorated commit graph. Pass -n to limit how many commits show.

imp log

explain

Describe what a diff or commit range changed in plain English — the intent, not a line-by-line readout. --brief, --balanced, and --full set the depth.

imp explain

review

An AI code review of the staged changes, or of the last N commits, flagging bugs, security issues, and missing error handling.

imp review

standup

A themed summary of recent work, grouped for a standup and citing commit hashes, skipping release and changelog noise.

imp standup

Branch and merge

branch

Create a branch from a plain-English description (AI names it type/short-name), or run it bare to switch between existing branches.

imp branch

merge

Merge a branch into the current one. On conflicts it walks each file through the same AI flow as resolve, then finalizes the merge commit. --ours / --theirs bias the resolution.

imp merge

resolve

Walk each conflicted file through AI resolution — accept, edit, discuss, or take one side. Resumes an in-progress merge or rebase, so pull, sync, and merge all hand off here.

imp resolve

done

Finish a feature branch: merge (or fast-forward) it into the base branch, then delete it locally and on the remote.

imp done

clean

Delete local branches that are already merged into the base branch, leaving the current branch and the base alone.

imp clean

worktree

Manage git worktrees — add, list, path, remove, prune. New worktrees branch off the base (origin/main), not whatever branch happens to be checked out.

imp worktree

Synchronize

pull

Fetch and integrate upstream into the current branch, auto-resolving conflicts. Mirrors git pull, but when the branches have diverged the rebase (or --merge) replays and any conflicts flow straight into the AI resolve step instead of stopping you. Does not push.

imp pull

push

Stage the working tree, split it into logical commits when needed, and push — without cutting a release.

imp push

sync

Pull, rebase, and push the current branch in one step. Reuses the same integration path as pull, so a conflict is auto-resolved rather than aborting the sync.

imp sync

stash

Save, list, show, pop, or drop stashes. A new stash gets an AI-written title so stash list reads like a to-do list instead of WIP on main.

imp stash

GitHub issues and PRs

fix

Start a fix branch from a GitHub issue: read the issue title and body and name the branch fix/<short-name>.

imp fix

pr

Open a GitHub pull request with an AI-generated title and description built from the branch's commits and diff. --into targets a base branch; --update edits the existing PR.

imp pr

Release

changelog

Update CHANGELOG.md from git history. By default it tops up the [Unreleased] section from the commits since the last tag, using the same diff-aware AI entry as release. --rebuild regenerates the whole file, mapping tags to version boundaries and inferring untagged ones; --fast uses the deterministic subject-based entry with no AI. See Changelog.

imp changelog

tag

Bump the version, write a CHANGELOG.md entry from the commits since the last tag, tag the release, and push.

imp tag

release

Squash, changelog, tag, and push a release. Interactive releases read the actual diffs for a rich changelog entry; --yes runs non-interactively with the deterministic entry. Rolls back automatically if any step fails.

imp release

ship

Split dirty work into logical commits, then release — no prompts. --fast skips the split and commits everything as one chore: sync.

imp ship

fleet

Run ship across every dirty repository nested under a directory, so a change that spans many repos releases in one pass.

imp fleet

version

Check each package manifest against the git tag (exit 1 on drift, so it gates CI); --sync rewrites drifted manifests to match the tag.

imp version

Recover and rewrite

rescue

Rank orphaned or recently-lost commits by how likely they are to be worth restoring, filtered by an optional topic hint, and recover the one you pick.

imp rescue

tidy

Propose a cleanup plan for messy history — squash fixups, reword vague messages, drop noise — and apply it after you approve.

imp tidy

Set up

init

Bootstrap a git repository: git init, add the remote when a URL is given, and generate a .gitignore for the detected stack. Mirrors git init.

imp init

setup

Configure this repo's .imp file — where its docs live, how aggressive documentation sync may be, and which commit types the changelog skips. Interactive; writes a committed .imp at the repo root.

imp setup

config

Set the machine-wide AI backend and models (~/.config/imp/config.json). This is per-developer and private, unlike the committed .imp. See Configuration.

imp config

docs

Sync prose documentation against a commit range using AI: read what the commits changed, find the pages that change makes inaccurate, and propose edits into the docs tree for review. Driven by the .imp file. See Documentation sync.

imp docs

doctor

Verify the tools imp needs and that the AI backend answers.

imp doctor

update

Update imp itself to the latest release.

help

The workflow quick-reference: every command grouped by phase, with the common solo, feature-branch, and hotfix flows.

imp help

Package manifests

At release time imp scans for package files (package.json, Cargo.toml, pyproject.toml, composer.json, pubspec.yaml, *.gemspec, mix.exs, build.gradle, pom.xml, Chart.yaml, manifest.json) and asks the AI which ones belong to this project. Vendored copies, fixtures, and dynamic-versioned manifests are skipped. Picked manifests are rewritten and staged into the release commit; rollback restores them on failure. Pass --no-manifests to disable.

Pre-release versions are translated to each ecosystem's native format. v0.0.52-rc.1 becomes:

EcosystemVersion
npm, cargo, helm, pub, hex, gradle0.0.52-rc.1
python (PEP 440)0.0.52rc1
composer, maven0.0.52-RC1
rubygems0.0.52.rc1
browser-ext manifest.json (no pre-release support)0.0.52

imp release --rc commits the manifest bump alongside the tag so the published artifact's version matches. imp changelog --rebuild --apply only labels existing commits with retroactive tags, so it leaves manifests alone. imp version --sync reconciles a drifted manifest against the tag outside a release.