Notable changes to cow, newest first.
Workspace names are now scoped by source repository — feature-x
becomes brightblur/feature-x automatically. cow list
drops the SOURCE column (it's encoded in the name) and gets a cleaner layout.
Adds flags for scripting and non-TTY use: --print-path on create,
-y/--yes on remove, and -m/--message for jj.
cow create feature-x --source ~/repos/brightblur stores the
workspace as brightblur/feature-x. Supply an explicit
scope/name to override.
brightblur/agent-1, brightblur/agent-2, etc.
cow list redesigned — SOURCE column removed (source is now
encoded in the scoped name). Branch column only appears when the branch
differs from the workspace name suffix.
cow create --print-path — suppress all output except the final
workspace path, making it easy to capture in scripts:
WS=$(cow create my-feature --print-path).
cow create -m/--message <MSG> — set the initial jj change
description immediately after workspace creation. Removes the separate
jj describe step (jj repos only).
cow remove -y/--yes — skip confirmation prompts without implying
a safety override. Unlike --force (which bypasses dirty checks),
--yes still shows dirty warnings — it just doesn't wait for input.
Idiomatic for scripts and non-TTY contexts.
cow list now shows a file count next to dirty workspaces
(e.g. dirty (3)), giving a quick sense of change scope without
running cow status.
cow create now rolls back atomically on failure and gains a
--from flag for branching from an arbitrary revision.
cow list contracts home to ~, and stale worktree
refs left behind by a failed clone are cleaned up automatically.
cow create --from <rev> — branch the new workspace from an
arbitrary revision rather than always using the source HEAD.
cow create now performs atomic rollback on failure: any partially
written workspace directory and git worktree entry are cleaned up before
returning an error.
cow create.
cow list now contracts the home directory to ~ in
path output, keeping lines short on typical setups.
Adds cow migrate, which discovers git linked worktrees, jj secondary
workspaces, and orphaned cow workspace directories and migrates them into proper
cow-managed APFS clone workspaces — so you can adopt cow without starting your
in-progress branches from scratch.
cow migrate [--source] [--all] [--force] [--dry-run] — discover
and migrate git worktrees, jj workspaces, and orphaned directories into
cow-managed workspaces. Git worktrees are replaced with an APFS clone and the
old worktree removed; jj workspaces are re-created with jj workspace add
and the old one forgotten; orphaned directories are registered in-place without
cloning. Dirty candidates are skipped unless --force is passed.
--dry-run prints the plan without making any changes.
cow migrate command reference and a Development section
documenting the three root causes of the test coverage gap in
migrate.rs (jj paths, subprocess integration tests, defensive error paths).
migrate tab.
Switches from a cp -Rc subprocess to a direct clonefile(2)
syscall for a measurable speed improvement on large repos, and fixes several
issues with Jujutsu workspace creation.
cp -Rc subprocess with a direct clonefile(2) syscall.
This is the same kernel call Time Machine uses: one atomic operation regardless of
directory depth, with no per-file process spawning. A 2 GB repository now clones in
around 130 ms wall time.
jj workspace add before copying untracked files from the source.
Previously the copy ran first, causing jj workspace add to reject the
non-empty destination directory.
signing.behavior="drop" to jj workspace add so SSH
passphrase prompts are suppressed during workspace creation. jj signs the initial
workspace commit immediately; this flag suppresses that without touching the
user's global jj config.
.jj/cow-context instead of .cow-context
at the workspace root. jj auto-tracks every new file in the working copy, so a
file at the root appeared as an addition in jj diff and jj status.
Content inside .jj/ is invisible to jj's working-copy tracking.
cow ships as a Homebrew formula and a Cargo crate (cow-cli),
covering the full workspace lifecycle with an MCP server for agent orchestration.
cow create — clone a repo into an isolated APFS workspacecow list — list all active workspaces, with optional JSON outputcow status — detailed workspace status including diff summarycow diff — passthrough to git diff or jj diffcow extract — extract changes back to source as patch or branchcow remove — remove workspaces, with dirty-state warningscow sync — fetch and rebase workspace onto source repo changescow cd — print workspace path for shell integrationcow mcp — run as an MCP stdio server for AI orchestrators