Bulk Operations
Send a single keystroke, text command, or recipe to every selected agent terminal at once with Daintree's Bulk Operations palette, including per-worktree template variables.
Bulk Operations
Bulk Operations is the one-shot palette for fanning a single action out across several agents. It complements the per-agent surfaces on the agents hub.
When you're running multiple agents across several worktrees, handling them one at a time gets tedious. Bulk Operations sends a single action to every selected agent terminal at once. Open the palette, pick which worktrees to target, choose what to send, and send it.
Bulk Operations is a one-shot palette: you open it, send once, and it closes. For a persistent armed-mode broadcast that mirrors your typing to every armed agent until you disarm it, see Fleet instead.
Opening Bulk Operations
There are three ways to open the Bulk Operations palette:
- Keyboard shortcut: Cmd+Alt+Shift+B (macOS) or Ctrl+Alt+Shift+B (Windows/Linux). Cmd+Shift+B on its own arms every eligible agent in the current worktree for Fleet Arming instead.
- Toolbar button: click the broadcast icon in the toolbar
- Action palette: open with Cmd+Shift+P and search for "Bulk Operations"
See Keyboard Shortcuts for the full shortcut reference.
Selecting Worktrees
The palette lists every worktree in your current project. Each row shows the branch name, the agent count, and the dominant agent state. Click a row to toggle its checkbox, or use Select All / Deselect All at the top to target everything at once.
Worktrees with no active agent terminals are greyed out and can't be selected. The footer keeps a running count of selected worktrees and the total agents that will receive the action.
State Filter Presets
Above the worktree list, four filter buttons let you add worktrees by their current state:
- Active: agents in the Working or Running state
- Waiting: agents blocked on input or approval
- Idle: agents at the prompt, ready for a command
- Completed: agents that have finished their task
Each button shows a count of matching worktrees and adds them to your current selection; it won't deselect anything you've already chosen. Matching uses the worktree's dominant agent state, so a worktree with one Idle and one Working agent falls under Active, since Working is the dominant state. These states map directly to the Agent State Tracking definitions on the agents hub.
Keyboard Navigation
The palette supports full keyboard navigation: ↑/↓ to move between worktrees, Space to toggle selection, Cmd+Enter to send, and Esc to go back or close.
Keystroke Mode
Keystroke mode sends a single key signal to every selected agent's terminal. There are four presets:
| Keystroke | Use Case |
|---|---|
| Escape | Cancel the current prompt or dismiss a menu |
| Enter | Confirm a pending approval across all agents |
| Ctrl+C | Interrupt a running agent (destructive) |
| Double Escape | Cancel the current task entirely (destructive) |
Ctrl+C and Double Escape are destructive. Select either one and an amber confirmation prompt appears before anything is sent. Double Escape sends two Escape keystrokes with a one-second gap between them.
Text Command Mode
Text Command mode types a message and submits it to every selected agent. Use it to give the same instruction to several agents at once, or to approve a batch of waiting prompts with a specific response.
Type your command in the input field, then press Enter to see a preview of the resolved text for each worktree. The preview step is your chance to check everything before confirming. Press Cmd+Enter to skip the preview and send right away.
The input supports template variables that resolve differently for each worktree. Click the variable chips below the input to insert them at the cursor. See Template Variables below for the full list.
Command history is available with the ↑/↓ arrow keys, storing up to 50 previous commands.
{{branch_name}} or {{issue_number}} to give each agent targeted context without typing a separate command for each. The preview step shows exactly what each worktree will receive.Recipe Mode
Recipe mode broadcasts a saved recipe to all selected worktrees. Recipes from all three scopes (Global, Team, and Project) are available to broadcast.
Select a recipe from the list, then preview which worktrees will receive it. After you confirm, recipes are dispatched three at a time through a concurrency queue so the system doesn't get overloaded.
Template Variables
Template variables resolve per-worktree at send time. They're available in Text Command mode and appear as clickable chips below the input field. Their values come from each worktree's Git branch and its linked GitHub issue or PR.
| Variable | Resolves To |
|---|---|
{{issue_number}} | GitHub issue number linked to the worktree |
{{pr_number}} | GitHub PR number linked to the worktree |
{{number}} | Issue number if available, otherwise PR number |
{{worktree_path}} | Absolute filesystem path to the worktree directory |
{{branch_name}} | Git branch name of the worktree |
If a variable can't be resolved for a worktree (no linked issue, say), it becomes an empty string. The preview step flags any unresolved variables with an amber warning so you catch them before sending.