Commands
Every command but doctor’s local checks, install, uninstall, config and app install talks to the daemon. Run wloop --help for the same list, including the commands of the intents your profile adds, and wloop <command> --help for one command’s help.
Get started
Section titled “Get started”Set up from zero: config, agent homes, the app.
wloop init [flags]Check the prerequisites, write the config, log in to Slack, install into the agent homes and the app, then run doctor. At a terminal it asks for each answer; elsewhere every answer comes from the flags.
| Flag | Description |
|---|---|
--projects-dir <dir> | Where review clones a repository the workspace manager does not know |
--agent <name> | The coding agent that runs the turns |
--scope-repo <owner/repo> | A repository to follow; repeatable |
--scope-team <org/slug> | A team whose review requests and pull requests to follow; repeatable |
--scope-person <login> | A login whose pull requests to follow; repeatable |
--profile <dir> | A personal profile directory, created with example blocks when absent |
--profile-default | Use the bundled profile alone |
--slack-client-id <id> | The client id of your Slack app |
--skip-slack | Leave Slack as it is |
--no-install | Install into neither the agent homes nor the app |
--yes | Say yes to every confirmation: overwrite the config, install, app install |
--color auto|always|never | Lay the output out for a terminal; auto styles it on a terminal alone |
Examples:
wloop initwloop init --scope-repo acme/api --profile-default --skip-slack --yesSee Set up with init.
doctor
Section titled “doctor”Diagnose the setup without changing anything.
wloop doctor [--git] [--color auto|always|never]wloop doctor --load [--json] [--color auto|always|never]Check the prerequisites, the config, the agent homes, the profile and the daemon, and print the command that fixes each problem. The checks of wloop‘s state ask the daemon. With --load, print what the daemon spent since it started instead.
| Flag | Description |
|---|---|
--git | Also check git access live with an ls-remote, as the daemon would run it |
--load | The calls, spawns and points by resource of every job, route and loop since the daemon started |
--json | With --load, print the report as JSON |
--color auto|always|never | Lay the output out for a terminal; auto styles it on a terminal alone |
Examples:
wloop doctorwloop doctor --loadSee Troubleshooting.
Pull requests
Section titled “Pull requests”Resolve a unit’s open items, replies as drafts.
wloop act <url|ref|permalink|slack:key> [guidance...]Act on the open items of a unit without touching its code: settle what you can and propose the replies it needs as drafts for you to approve; Address works on the code of a pull request you develop. The target is a pull request URL, a Slack message ref (<conversation>/<ts>) or permalink, or <provider>:<key> of a unit the intent serves; words after it are guidance for the turn.
Examples:
wloop act https://github.com/acme/api/pull/7wloop act https://acme.slack.com/archives/C0123/p1700000000000100 say we ship FridaySee Tasks and views.
address
Section titled “address”Triage the reviews and failing checks of yours.
wloop address <url> [--self-review] [--take-over] [--no-wait] [--no-brief] [guidance...]Triage the reviews and failing checks of a pull request you develop, in its workspace, changing its code where they call for it; Act only settles open items and drafts replies. The target is a pull request URL; words after it are guidance for the turn. It runs as an intake this command follows; Ctrl-C stops following, not the intake.
| Flag | Description |
|---|---|
--self-review | Reviews the change with the review profile first, against the guidance as its plan, and fixes what it finds; nothing of that review is published |
--take-over | Takes it over first |
--no-wait | Print the intake’s number instead of following it |
--no-brief | Start the round without its brief |
Examples:
wloop address https://github.com/acme/api/pull/7wloop address --self-review https://github.com/acme/api/pull/7 the plan is in the descriptionSee Address reviews on your pull request.
Talk with an agent about a task.
wloop chat <task:key> [--repo <repo>] [--manager <name>] [--parent <worktree>] [guidance...]Talk with an agent about a task: in the task’s last session when it can resume, else in a new one, in a worktree of the task’s repository or with no checkout. The target is task:<id>; words after it are guidance for the turn.
| Flag | Description |
|---|---|
--repo <repo> | Owner/name of the repository to work in; without it the session has no checkout |
--manager <name> | The workspace manager that creates the worktree, instead of the configured ones |
--parent <worktree> | The worktree the new one goes under, where its manager keeps parents; the one the command runs in by default |
Examples:
wloop chat task:t-3f9a2c4b5d6e7f80 what is left before we can ship this?See Tasks and views.
Ask whoever it waits on for the next step.
wloop nudge <url> [guidance...]Ask whoever the pull request waits on for the next step, in a comment; guidance is the topic. The target is a pull request URL; words after it are guidance for the turn.
Examples:
wloop nudge https://github.com/acme/api/pull/7wloop nudge https://github.com/acme/api/pull/7 the release is on FridaySee Nudge whoever a pull request waits on.
review
Section titled “review”Review someone else’s pull request in its own worktree.
wloop review <url> [--no-wait] [--no-brief] [guidance...]Start or continue a review round on someone else’s pull request, in a dedicated workspace. The target is a pull request URL; words after it are guidance for the turn. It runs as an intake this command follows; Ctrl-C stops following, not the intake.
| Flag | Description |
|---|---|
--no-wait | Print the intake’s number instead of following it |
--no-brief | Start the round without its brief |
Examples:
wloop review https://github.com/acme/api/pull/7wloop review https://github.com/acme/api/pull/7 look at the migration firstSee Review someone else’s pull request.
Start new work from a brief.
wloop start [task:<id>] [--repo <repo>] [--manager <name>] [--parent <worktree>] [guidance...]Start new work from a brief: in a fresh worktree of a repository, or with no checkout. The target is task:<id>, or none to capture the brief as a new task; words after it are guidance for the turn.
| Flag | Description |
|---|---|
--repo <repo> | Owner/name of the repository to work in; without it the session has no checkout |
--brief-file <path> | Read the new task’s brief from a file, instead of the words after the flags |
--manager <name> | The workspace manager that creates the worktree, instead of the configured ones |
--parent <worktree> | The worktree the new one goes under, where its manager keeps parents; the one the command runs in by default |
Examples:
wloop start --repo acme/api add retries to the webhook sender; done when a failed delivery is retried three timeswloop start task:t-3f9a2c4b5d6e7f80 --repo acme/apiwloop start --repo acme/api --brief-file brief.mdSee Tasks and views.
take-over
Section titled “take-over”Make a pull request someone else opened yours.
wloop take-over <url>Make a pull request someone else opened yours to develop: from then on wloop treats it as one of yours, and address works on it.
Examples:
wloop take-over https://github.com/acme/api/pull/7remove
Section titled “remove”Delete the workspace of a merged or closed one.
wloop remove <url> [--force]Remove the workspace of a merged or closed pull request when nothing in it would be lost. --force removes it whatever it holds, for good; an open pull request’s workspace stays.
| Flag | Description |
|---|---|
--force | Remove whatever the workspace holds |
Examples:
wloop remove https://github.com/acme/api/pull/7See Workspaces and board columns.
What waits on you
Section titled “What waits on you”status
Section titled “status”What needs you, by view, and the tracked pull requests.
wloop status [--color auto|always|never]List the tasks of the views the badge counts, such as Inbox and Needs me, then the pull requests you track. Piped, it prints one tab-separated line per task or pull request and view.
| Flag | Description |
|---|---|
--color auto|always|never | Lay the output out for a terminal; auto styles it on a terminal alone |
Examples:
wloop statuswloop status | grep needs-meSee Cockpit, terminal client and menu bar.
The same views in the terminal, one-key actions.
wloop tuiThe views in the terminal, the profile’s and the plugins’, with one-key actions on the selected task or pull request.
Examples:
wloop tuiSee Cockpit, terminal client and menu bar.
The cockpit, a workspace or a pull request.
wloop open [<pr-url> | #<route> | <cockpit-url> | wloop://open/#<route>]wloop open [<pr-url> | #<route>] --print [--view <view>]Open the workspace of a pull request in Claude Desktop or Orca, or the pull request itself when it has none. With no argument, open the cockpit; with a route (#queue=answer), a URL of this cockpit or a wloop:// link, open the cockpit there. The cockpit opens in the app’s window when the app runs, else in the browser. With --print, print the cockpit URL with its token instead of opening it.
| Flag | Description |
|---|---|
--print | Print the cockpit URL with its token instead of opening it |
--view <view> | The cockpit view, by its id, such as needs-me or mine |
Examples:
wloop openwloop open https://github.com/acme/api/pull/7wloop open '#queue=answer'wloop open wloop://open/#view=needs-mewloop open --print --view needs-meSee Cockpit, terminal client and menu bar.
outbox
Section titled “outbox”Drafts waiting for your approval, and yours.
wloop outbox [list] [--color <when>]wloop outbox show <id> [--color <when>]wloop outbox new <unit|message> <markdown> [--send [--yes]]wloop outbox new <unit|message> --react <emoji> [--send [--yes]]wloop outbox approve <id> [--text <markdown>] [--yes]wloop outbox retry <id> [--confirm] [--yes]wloop outbox edit <id> <markdown>wloop outbox discard <id> [--reason <why>]List the drafts waiting on you, proposed, failed or left sending, grouped by kind, or print one whole: its text as it reads, the items it is about and the commands it takes. Piped, the list is one tab-separated line per draft: id, kind, state, unit, label, mentions, creation time and first line. new writes a reply, or a reaction, on a unit: a Slack message ref (<conversation>/<ts>) or permalink (its thread, or with --react the message itself), a pull request URL or owner/repo#n, or <provider>:<key>. It waits in the Outbox for your approval; with --send it posts once you read it and say yes. approve shows a draft whole and posts it once you say yes at a terminal; from an agent’s shell it needs --yes and a session you drive, whose agent asks you first; retry posts a failed one again. edit changes a draft’s text and discard drops it.
| Flag | Description |
|---|---|
--color <when> | list, show: auto, always or never |
--react <emoji> | new: react instead of replying: to the Slack message named, else to the unit’s message |
--send | new: post it now, through the Outbox, instead of saving it there |
--text <markdown> | approve: post this text instead of the draft’s |
--confirm | retry: post again a draft that may have been posted |
--yes | new --send, approve, retry: go ahead without asking |
--reason <why> | discard: why the draft is dropped |
Examples:
wloop outboxwloop outbox new https://acme.slack.com/archives/C0123/p1700000000000100 "Friday works"wloop outbox approve 12wloop outbox discard 12 --reason "answered in person"See What waits for you.
Create a task, or make this agent session a run of one.
wloop task new --title <title> [--brief-file <path>] [--prop <name>=<value>]... [--repo <owner/name>]wloop task attach task:<id>new creates a task in the Inbox and prints it as task:<id>: a title alone captures it. Each property is one tasks.toml declares, parsed by its type, and a value its type refuses creates nothing. attach makes the agent session it runs in, one a workspace manager started, a run of the task: the task’s page lists it with its workspace, session and transcript, and what it posts or drafts lands on the task. Its turn owes no record, so the session stops as it would without wloop.
| Flag | Description |
|---|---|
--title <title> | new: the task’s title, one short line |
--brief-file <path> | new: a file whose markdown is the task’s brief |
--prop <name>=<value> | new: a property of the task; repeatable |
--repo <owner/name> | new: the repository the task’s work runs in |
Examples:
wloop task new --title "Add retries to the webhook sender" --brief-file brief.md --prop priority=high --repo acme/apiwloop task attach task:t-3f9a2c4b5d6e7f80See Tasks and views.
explore
Section titled “explore”Open pull requests of others to help on.
wloop explore <url|owner/repo|repo|login|@org/team|search>List open pull requests of others to help on, with their size, review state, checks and your last review: one GitHub search, 30 results. A bare word is a repository you follow, else a login, else text searched in the owners of the repositories you follow.
Examples:
wloop explore acme/apiwloop explore @acme/platformwloop explore flaky testSee The daemon.
Automation
Section titled “Automation”What the workflows would do now, and why.
wloop plan [--workflow <name>] [--provider <id>] [--stored]wloop plan --unit <url|owner/repo#n|provider:key|id>wloop plan apply <id|url>...wloop plan dismiss <id|url>...Print what the workflows would do now, grouped by decision, with each item’s id, unit as its row names it, reason, window and gain; it changes nothing. --unit tells why nothing happens to a unit, such as session:<session-id>, or to the unit of an item by the id plan printed: its items, then every workflow that gives it none, with the facts it read. apply runs pending items now, with the same guards, and dismiss drops them for good; a pull request’s URL names its one pending item.
| Flag | Description |
|---|---|
--workflow <name> | Only this workflow’s items |
--provider <id> | Only the units of this provider: github, session or workspace |
--stored | The plan the daemon holds, of every trigger, instead of evaluating the sweep now |
--unit <unit> | What every workflow decides for this unit now, a workflow that gives it no item included |
Examples:
wloop planwloop plan --unit acme/api#7wloop plan apply https://github.com/acme/api/pull/7See Tune workflows.
pause/resume
Section titled “pause/resume”Stop or restart automatic rounds.
wloop pause [<url>|<owner/repo>]...wloop resume [<url>|<owner/repo>]...Stop or restart the workflows that do not observe and the board moves on those pull requests and repositories; with none, everywhere. Workflows that observe keep planning.
Examples:
wloop pausewloop pause acme/apiwloop resume https://github.com/acme/api/pull/7track/untrack
Section titled “track/untrack”Follow a pull request out of scope, or stop.
wloop track <url>wloop untrack <url>Add a pull request to wloop, which then follows it like any in scope. untrack drops that reason; other reasons still hold it.
Examples:
wloop track https://github.com/acme/api/pull/7See The daemon.
mute/unmute
Section titled “mute/unmute”Leave or rejoin the pending views.
wloop mute <url> [--until <duration> | --until-state]wloop unmute <url>Snooze a pull request’s task, out of the pending views, for a while or until who it waits on changes: a wake on the task; unmute wakes it now.
| Flag | Description |
|---|---|
--until <duration> | Mute for a duration such as 2d or 36h |
--until-state | Mute until who the pull request waits on changes |
Examples:
wloop mute https://github.com/acme/api/pull/7 --until 2dwloop unmute https://github.com/acme/api/pull/7See What waits for you.
workflows
Section titled “workflows”The facts and steps a workflow can use.
wloop workflows facts [<provider>]wloop workflows stepsPrint the facts a workflow’s predicates read, by subject, and the steps it may run. The documentation has the manifest reference.
Examples:
wloop workflows facts githubwloop workflows stepsSee Facts and steps.
Profile
Section titled “Profile”profile show
Section titled “profile show”The blocks that apply to a repository.
wloop profile show <owner/repo|url> [--intent <intent>] [--show] [--color auto|always|never]List the profile’s blocks per intent, their conditions and which of them apply to that repository or pull request. --show prints the instructions a turn there reads.
| Flag | Description |
|---|---|
--intent <intent> | Only this intent’s blocks |
--show | Print the instructions a turn there would read |
--color auto|always|never | Lay the output out for a terminal; auto styles it on a terminal alone |
Examples:
wloop profile show acme/apiwloop profile show https://github.com/acme/api/pull/7 --intent review --showSee Write your review profile.
profile where
Section titled “profile where”The block a new rule goes in.
wloop profile where <intent> [conditions]Name the block of the profile a rule with these conditions goes in, and the blocks that join it in a turn.
| Flag | Description |
|---|---|
--<dimension> <value> | A condition of the block, one flag per dimension: --organization, --repo, --user, --team, --association, --label, --base, --stage, --reviewer, --kind, --size, --risk |
--tag <key>=<value> | A tag condition; repeatable |
Examples:
wloop profile where review --organization acme --repo apiSee Profile format.
profile add
Section titled “profile add”Add a rule to the profile.
wloop profile add <intent>[,<intent>...] [conditions] [flags] [-- <text>]Add a rule to the block these conditions name, creating the block when it is new. It prints the diff and writes it with --apply; the rule’s text comes after —, else from standard input.
| Flag | Description |
|---|---|
--<dimension> <value> | A condition of the block, one flag per dimension: --organization, --repo, --user, --team, --association, --label, --base, --stage, --reviewer, --kind, --size, --risk |
--tag <key>=<value> | A tag condition; repeatable |
--section <heading> | The ## heading the rule goes under |
--title <title> | The block’s heading, for a new block |
--override | The new block replaces the guidance above it |
--paths <glob> | A glob a changed file must match, for a new block; repeatable |
--apply | Write the change; without it, print the diff |
Examples:
wloop profile add review --organization acme -- Every migration needs a down step.wloop profile add nudge --apply -- Keep nudges to two sentences.See Write your review profile.
profile check
Section titled “profile check”Load the profile and list its problems.
wloop profile check [<dir>] [--color auto|always|never]Load the profile, the configured one or the one in <dir>, and list its intents, blocks and conditions. It exits 1 when anything fails to load.
| Flag | Description |
|---|---|
--color auto|always|never | Lay the output out for a terminal; auto styles it on a terminal alone |
Examples:
wloop profile checkwloop profile check ~/work/my-profileSee Write your review profile.
profile try
Section titled “profile try”A review round that publishes nothing.
wloop profile try <url>Run a review round in a throwaway worktree with the review profile and print the review it would publish. Nothing reaches the pull request.
Examples:
wloop profile try https://github.com/acme/api/pull/7See Write your review profile.
profile schema
Section titled “profile schema”The JSON Schemas of the profile files, for editors.
wloop profile schema [--workflow|--actions|--tasks|--views|--gates|--records|--keys|--strings|--timeline|--decisions|--home|--omnibox|--config]Print the JSON Schema of intent.toml, or of workflow.toml, actions.toml, tasks.toml, views.toml, gates.toml, records.toml, keys.toml or config.toml, for an editor. Every schema comes from the grammar the loaders check.
| Flag | Description |
|---|---|
--workflow | The schema of workflow.toml |
--actions | The schema of actions.toml |
--tasks | The schema of tasks.toml |
--views | The schema of views.toml |
--gates | The schema of gates.toml |
--records | The schema of records.toml |
--keys | The schema of keys.toml |
--strings | The schema of strings.toml |
--timeline | The schema of timeline.toml |
--decisions | The schema of decisions.toml |
--home | The schema of home.toml |
--omnibox | The schema of omnibox.toml |
--config | The schema of config.toml |
Examples:
wloop profile schema > intent.schema.jsonwloop profile schema --config > config.schema.jsonSee Profile language.
slack login/logout
Section titled “slack login/logout”Connect to Slack, or disconnect.
wloop slack login [--no-browser]wloop slack login --app-tokenwloop slack logoutLog in to Slack in the browser; it needs plugins.slack.client_id in the config. --app-token saves the app-level token read from standard input. logout revokes and deletes the tokens.
| Flag | Description |
|---|---|
--no-browser | Print the login URL instead of opening the browser |
--app-token | Save the app-level token read from standard input |
Examples:
wloop slack loginwloop pbpaste | wloop slack login --app-tokenSee Connect Slack.
slack status
Section titled “slack status”Who you are logged in to Slack as.
wloop slack statusShow the Slack login: the team, the user, when the token expires and whether the app-level token is stored.
Examples:
wloop slack statusSee Connect Slack.
slack send
Section titled “slack send”Post as you to a thread, channel or person.
wloop slack send <target> <text> [--thread=false] [--broadcast] [--yes]Post as you to a message, by its ref (<conversation>/<ts>) or permalink, a #channel, channel id, @handle, email or user id. A message target replies in its thread, through the Outbox: a draft of yours on the thread, approved once you say yes, so it feeds the thread’s items and shows in the Logbook. It asks first unless --yes.
| Flag | Description |
|---|---|
--thread=false | Post to a message’s conversation instead of its thread |
--broadcast | Also send a thread reply to the conversation |
--yes | Post without asking |
Examples:
wloop slack send '#releases' 'api 1.4 is out'wloop slack send @maria 'can you look at acme/api#7?'See Connect Slack.
slack follow/unfollow
Section titled “slack follow/unfollow”Admit every message of a thread, or stop.
wloop slack follow <message>wloop slack unfollow <message>Follow the Slack thread of a message, named by its ref (<conversation>/<ts>) or permalink, so every message of it is admitted, or stop following it.
Examples:
wloop slack follow https://acme.slack.com/archives/C024BE91L/p1700000000000100See Connect Slack.
install
Section titled “install”Write the hooks, MCP and skills into agent homes.
wloop install [--home <dir>]... [--dry-run] [--print-skill <name>]Write into every agent home wloop finds, or each --home: the MCP registration, the Stop, SessionStart and UserPromptSubmit hooks, the turn_end permission and the bundled skills, also into ~/.agents. settings.json and the MCP registration are backed up before their first change; a skill is replaced only while it is unedited. Run it again after each upgrade.
| Flag | Description |
|---|---|
--home <dir> | An agent home to install into, instead of every one found; repeatable |
--dry-run | Print what would change and change nothing |
--print-skill <name> | Print the bundled skill with this name and exit |
Examples:
wloop installwloop install --home ~/agent-home --dry-runSee Install.
app install
Section titled “app install”macOS: the app, menu bar and the daemon at login.
wloop app install [--no-menu-bar]Install wloop.app, with the menu bar and notifications, and the LaunchAgents that run the daemon and the menu bar at login. --no-menu-bar installs only the daemon’s, which keeps serve running.
| Flag | Description |
|---|---|
--no-menu-bar | Install only the daemon’s LaunchAgent |
Examples:
wloop app installSee Install.
Trust a repository in an agent home.
wloop trust [--home <dir>] [--exact] <folder|workspace>Trust a folder’s repository in an agent home, the configured one by default, as accepting the agent’s trust dialog would; it covers every worktree of it. wloop never trusts a folder unless you run this, or the folder is a repository it just cloned for a project whose trust_clones is on.
| Flag | Description |
|---|---|
--home <dir> | The agent home that trusts it |
--exact | Trust the folder alone rather than its repository’s main checkout |
Examples:
wloop trust ~/src/apiSee Troubleshooting.
uninstall
Section titled “uninstall”Take out what install and app install set up.
wloop uninstall [--purge] [--dry-run] [--yes]Take out the daemon’s and the menu bar’s LaunchAgents, wloop.app, the agent homes’ entries, the unchanged bundled skills and the Slack tokens. It keeps the config and the data unless --purge, and asks first unless --yes.
| Flag | Description |
|---|---|
--purge | Also delete the state and config directories: the store and its backups, MCP key, dossiers, logs, config and review profiles |
--dry-run | Print what would be removed and change nothing |
--yes | Remove without asking |
Examples:
wloop uninstall --dry-runwloop uninstallSee Uninstall.
store migrate
Section titled “store migrate”Migrate the store to this release’s schema.
wloop store migrate [--dry-run] [--yes]Take the store to this release’s schema version: copy it into <state>/backups, run each migration in its own transaction and check the result. A release’s daemon does this on its own when it starts; run it when a build that is not a release asks for it, or to retry a migration that failed and see each step. It asks first unless --yes.
| Flag | Description |
|---|---|
--dry-run | Print the migrations, the backup and the space it needs, and change nothing |
--yes | Migrate without asking |
Examples:
wloop store migrate --dry-runwloop store migrateSee Upgrade.
store restore
Section titled “store restore”Put a backup of the store back.
wloop store restore [--list] [<backup>] [--yes]Replace the store with a backup from <state>/backups, by default the newest this release reads, keeping the replaced store there as a pre-restore copy. What changed since the backup is lost. A backup older than this release is migrated after. It asks first unless --yes.
| Flag | Description |
|---|---|
--list | List the backups with their schema versions and dates |
--yes | Restore without asking |
Examples:
wloop store restore --listwloop store restoreSee Upgrade.
config get
Section titled “config get”Print a configuration value.
wloop config get <key>Print a configuration value, defaults included. A dot names a nested key.
Examples:
wloop config get agentwloop config get sweep.fastSee Configuration.
config set
Section titled “config set”Write a configuration value.
wloop config set <key> <value>Write one key of the config file, keeping its comments and layout. The value is read as TOML (true, 5, [“a”, “b”], “quoted”) and as a string when it is not TOML. A key no setting reads, a workflows.<name> key whose name is none of the profile’s workflows (doctor lists them) nor a disabled plugin’s, or a value the configuration would refuse, changes nothing. The previous file is kept beside it as a backup. The daemon applies profile live; any other key after a restart.
Examples:
wloop config set workflows.task-check-on.enabled falsewloop config set sweep.fast 5mwloop config set plugins.github.automated_reviewers '["acme-bot"]'See Configuration.
config unset
Section titled “config unset”Remove a configuration value.
wloop config unset <key>Remove one key from the config file, so its default applies, keeping the rest as written and the previous file as a backup. A table’s name removes the whole table, and a table left with no key or comment loses its header too. It removes a key no setting reads too, so a file that does not load can be fixed one key at a time.
Examples:
wloop config unset sweep.fastwloop config unset workflows.task-check-onSee Configuration.
version
Section titled “version”Print the version.
wloop versionPrint the version of wloop.
Examples:
wloop versionTroubleshooting
Section titled “Troubleshooting”timings
Section titled “timings”Review, merge and turn durations, waits, tokens.
wloop timings [--since <days>] [--prs] [--turns] [--tags] [--json]What wloop recorded: time to review, approve and merge, lead time, who pull requests waited on, turn and brief durations, waits, tokens and a change failure proxy.
| Flag | Description |
|---|---|
--since <days> | The days to look back (default 30) |
--prs | Also list each pull request with its milestones |
--turns | Also list each turn with its duration |
--tags | Also list each tag key’s values and the dropped spellings |
--json | Print the report as JSON |
Examples:
wloop timingswloop timings --since 7 --prsSee The daemon.
intake
Section titled “intake”Follow, start or cancel an intake.
wloop intake <n>wloop intake without <n>wloop intake cancel <n>Follow an intake until its round starts, start it without waiting for its brief, or cancel it. Ctrl-C stops following, not the intake.
Examples:
wloop intake 42wloop intake without 42See The brief.
brief refresh
Section titled “brief refresh”Make a pull request’s brief again.
wloop brief refresh <url>Make a pull request’s brief again now. It needs brief.enabled.
Examples:
wloop brief refresh https://github.com/acme/api/pull/7See The brief.
brief copy
Section titled “brief copy”Copy a review request for a pull request.
wloop brief copy <url>Put a review request with the pull request’s title, link and brief on the clipboard, to paste in a chat; where there is no clipboard it prints the request. The profile’s actions.toml words it.
Examples:
wloop brief copy https://github.com/acme/api/pull/7See The brief.
turn show
Section titled “turn show”A pull request’s turns and their records.
wloop turn show <url> [--json] [--color auto|always|never]Print the pull request’s turns with their records and answers. Piped or with --json, it prints JSON with each one’s instructions.
| Flag | Description |
|---|---|
--json | Print the book as JSON, as off a terminal |
--color auto|always|never | Lay the output out for a terminal; auto styles it on a terminal alone |
Examples:
wloop turn show https://github.com/acme/api/pull/7See Turns and rounds.
Prove an agent home end to end.
wloop probe --workspace <workspace-id-or-path> [--home <dir>] [--model <name>]The daemon sends a self-test turn into a new session of the Claude Desktop or Orca workspace and prints its turn as JSON, which proves the agent home, its hooks and its MCP registration work together.
| Flag | Description |
|---|---|
--workspace <workspace-id-or-path> | The workspace the probe’s session runs in: its Claude Desktop or Orca id or its worktree path |
--home <dir> | The agent home the session runs with (default: the agent’s own) |
--model <name> | The agent’s model (default: the agent’s own) |
Examples:
wloop probe --workspace ws-123See Troubleshooting.
For agents and scripts
Section titled “For agents and scripts”instructions
Section titled “instructions”Run a turn by hand from an agent session.
wloop instructions <intent> [<url>] [<intent flags>] [-- <guidance>]wloop instructions <intent> --turn <id>Run a turn of an intent by hand from an agent session: the daemon prepares this worktree, starts the turn on this session and prints its instructions. --turn starts the turn wloop sent instead and prints its instructions.
| Flag | Description |
|---|---|
--turn <id> | Start the turn wloop sent with this id |
--agent <name> | The agent that reads them (default: the configured one) |
Examples:
wloop instructions review https://github.com/acme/api/pull/7 -- focus on the APIwloop instructions review --turn 66ea4cdcae20See Turns and rounds.
turn end/answer
Section titled “turn end/answer”Record how a turn ended; read your answer.
wloop turn end <url> --turn <id> --file <path>wloop turn answer <url> [--gate <id>]end records how this session’s turn ended, from a JSON file, when the session has no wloop MCP tool; the file is deleted once stored. answer prints the user’s answers to this session’s gates that it has not read, or, with --gate, every answer that resolved that gate, and marks them read.
| Flag | Description |
|---|---|
--turn <id> | The id on the first line of the turn’s instructions |
--file <path> | The JSON file that holds the record |
Examples:
wloop turn end https://github.com/acme/api/pull/7 --turn 66ea4cdcae20 --file /tmp/record.jsonwloop turn answer https://github.com/acme/api/pull/7See Turns and rounds.
The agent hooks install writes.
wloop hook session-start [--agent <name>]wloop hook stop [--agent <name>]wloop hook prompt [--agent <name>]wloop hook mcp-headersThe agent’s hooks, which install writes into each agent home; they read the payload on standard input and never block by failing. prompt records when you type, which closing a session reads. mcp-headers prints the session’s handle as the header of wloop‘s MCP server; the MCP registration runs it.
| Flag | Description |
|---|---|
--agent <name> | The agent whose hook this is |
Examples:
wloop hook stop < payload.jsonSee Turns and rounds.
Run the daemon.
wloop serveRun the daemon, headless: the store, the sweeps, the cockpit and wloop‘s MCP server. The daemon’s LaunchAgent runs it.
Examples:
wloop serveSee The daemon.
macOS: the menu bar and notifications.
wloop appRun the menu bar and the notifications, a client of the daemon. wloop.app runs it.
Examples:
wloop appSee Cockpit, terminal client and menu bar.
This page is generated from wloop help by make docs-ref.