All nine commands.
Complete reference for every cow command and option.
cow create [OPTIONS] [NAME]
Create a new workspace from a repository using APFS copy-on-write. When a name is given it is also used as the branch name (created if it does not exist). Omit the name and cow auto-generates agent-1, agent-2, and so on.
| Option | Description |
|---|---|
--source <PATH> | Source repository to clone (default: current directory) |
--branch <BRANCH> | Override the branch name (default: same as workspace name) |
--no-branch | Do not switch or create a branch after cloning |
--change <CHANGE> | jj change ID to edit in the new workspace (jj repos only) |
--dir <PATH> | Parent directory for workspaces (default: ~/.cow/workspaces/) |
--no-clean | Skip post-clone cleanup of runtime artefacts (.pid, .sock, etc.) |
clonefile(2) directly — the same kernel syscall Time Machine uses. A 2 GB repository clones in around 130 ms wall time, with near-zero extra disk until files are modified.
cow list [OPTIONS]
List all active workspaces managed by cow, showing their name, source repository, branch, VCS, and creation time.
| Option | Description |
|---|---|
--source <PATH> | Filter to workspaces created from this source repository |
--json | Machine-readable JSON output for scripting and MCP tools |
cow status [NAME]
Show detailed status of a workspace, including its path, source repository, branch, dirty/clean state, and a short diff summary. Defaults to the current directory if it is a cow workspace.
cow diff [NAME]
Show uncommitted changes in a workspace relative to its last commit. Passes through to git diff or jj diff as appropriate. Defaults to the current directory if inside a workspace.
cow extract [OPTIONS] <NAME>
Extract committed changes from a workspace back into the source repository. Use --patch to produce a patch file for review, or --branch to land the branch directly in the source repo so you can push a PR normally.
| Option | Description |
|---|---|
--patch <FILE> | Write a unified diff patch to this file |
--branch <NAME> | Create (or update) this branch in the source repo at workspace HEAD |
cow extract goes from workspace to source. cow sync goes the other way.
cow remove [OPTIONS] <NAME...>
Remove one or more workspaces. Warns before removing workspaces with uncommitted changes, and offers to push unpushed commits first. Pass multiple names to remove several workspaces at once.
| Option | Description |
|---|---|
--force | Skip dirty-state warnings and remove without prompting |
--all | Remove all workspaces (can be scoped with --source) |
--source <PATH> | Scope --all to workspaces from this source repository |
cow sync [SOURCE_BRANCH]
Fetch the latest commits from the source repository and rebase (or merge) the workspace onto them. Defaults to syncing with the workspace's own branch; pass a branch name to sync against a different one (e.g. cow sync main).
| Option | Description |
|---|---|
--merge | Merge instead of rebase |
--name <NAME> | Target a named workspace instead of auto-detecting from the current directory |
cow cd <NAME>
Print the absolute path of a named workspace. Designed for shell integration rather than direct use.
~/.zshrc or ~/.bashrc:function cowcd() { cd "$(cow cd "$1")"; }Then use
cowcd feature-x to jump straight into a workspace.
cow mcp
Run cow as a Model Context Protocol stdio server, exposing cow_create, cow_list, cow_remove, cow_status, and cow_diff as MCP tools so agents can manage workspaces without any human intervention.
~/.claude.json (global) or a project-local .mcp.json. See the MCP section on the homepage for the config snippet.
.cow.json — project config
Add a .cow.json to the root of your repository to define project-specific post-clone behaviour. Runs automatically after every cow create.