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.
| Workflow | Commands |
|---|---|
| Compose changes | commit, split, amend, fixup, undo, revert |
| Inspect work | status, log, explain, review, standup |
| Branch and merge | branch, merge, resolve, done, clean, worktree |
| Synchronize | pull, push, sync, stash |
| GitHub issues and PRs | fix, pr |
| Release | changelog, tag, release, ship, fleet, version |
| Recover and rewrite | rescue, tidy |
| Set up | init, 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 commitsplit
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 splitamend
Fold the staged changes into the last commit and regenerate its message from the combined diff.
imp amendfixup
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 fixupundo
Undo the last N commits while keeping their changes in the working tree — a soft reset you can inspect before recommitting.
imp undorevert
Safely reverse an already-pushed commit with a new revert commit and an AI-written message, leaving history intact.
imp revertInspect work
status
A compact overview of the working tree: branch, staged and unstaged changes, and how far ahead or behind the upstream sits.
imp statuslog
A pretty, decorated commit graph. Pass -n to limit how many commits show.
imp logexplain
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 explainreview
An AI code review of the staged changes, or of the last N commits, flagging bugs, security issues, and missing error handling.
imp reviewstandup
A themed summary of recent work, grouped for a standup and citing commit hashes, skipping release and changelog noise.
imp standupBranch 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 branchmerge
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 mergeresolve
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 resolvedone
Finish a feature branch: merge (or fast-forward) it into the base branch, then delete it locally and on the remote.
imp doneclean
Delete local branches that are already merged into the base branch, leaving the current branch and the base alone.
imp cleanworktree
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 worktreeSynchronize
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 pullpush
Stage the working tree, split it into logical commits when needed, and push — without cutting a release.
imp pushsync
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 syncstash
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 stashGitHub 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 fixpr
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 prRelease
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 changelogtag
Bump the version, write a CHANGELOG.md entry from the commits since the last
tag, tag the release, and push.
imp tagrelease
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 releaseship
Split dirty work into logical commits, then release — no prompts. --fast skips
the split and commits everything as one chore: sync.
imp shipfleet
Run ship across every dirty repository nested under a directory, so a change
that spans many repos releases in one pass.
imp fleetversion
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 versionRecover 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 rescuetidy
Propose a cleanup plan for messy history — squash fixups, reword vague messages, drop noise — and apply it after you approve.
imp tidySet 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 initsetup
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 setupconfig
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 configdocs
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 docsdoctor
Verify the tools imp needs and that the AI backend answers.
imp doctorupdate
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 helpPackage 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:
| Ecosystem | Version |
|---|---|
| npm, cargo, helm, pub, hex, gradle | 0.0.52-rc.1 |
| python (PEP 440) | 0.0.52rc1 |
| composer, maven | 0.0.52-RC1 |
| rubygems | 0.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.