Bulk operations
When you’ve got twenty things in your inbox and twelve of them need the same treatment (defer to next week, add to today, mark complete, archive), going one at a time is the wrong tool. Pensum’s list views ship with vim-style multi-select and bulk actions that apply to the whole selection in a single write.
Selecting rows
Section titled “Selecting rows”Every list view supports the same selection model:
| Key | What it does |
|---|---|
v | Toggle the current row in/out of the multi-selection |
Shift+J / Shift+K | Extend the selection one row down/up |
* | Select all currently visible rows |
Esc | Clear the multi-selection |
Selected rows render with a stronger accent and a left border so you always know what’s in scope. A counter in the view header shows the current count.
There’s no separate “selection mode” — once you’ve toggled at least one row with v, the next action key (complete, defer, etc.) applies to the selection. Once you Esc out (or run an action that empties the selection), keys go back to acting on the single current row.
Bulk actions
Section titled “Bulk actions”Every action key works the same way: if there’s a multi-selection, it acts on all selected rows; otherwise it acts on the cursor row.
| Key | Bulk action |
|---|---|
x / Space | Mark every selected task complete |
t | Toggle “Add to Today” on the whole selection. If they’re already all on today, it removes the scheduled date; otherwise it sets it. |
d | Open the Defer modal for the whole selection — pick one target date, applied to every selected task |
r | Open the Reschedule modal for the selection |
Shift+Del | Delete every selected task. One confirmation for the whole batch. |
Each bulk action does a single file pass — Pensum groups the selected tasks by source file, applies the edits in one read-modify-write per file (with the per-file write mutex), and then triggers one incremental scan. So 30 tasks across 5 files is 5 disk writes, not 30.
Where it works
Section titled “Where it works”Multi-select is available in every list view:
- Today / Inbox / Forecast / Waiting / Weekly Review
- By Project / Project Page
- Calendar (per-day row list)
- Search / Filters
- Agent Captures
The same keyboard shortcuts work everywhere — the bulk action set adapts to the view (e.g. in the Agent Captures view, x accepts; in Waiting, completing flips status back to active).
Bulk defer
Section titled “Bulk defer”Defer is the multi-select sweet spot. Common pattern at end of day:
- Open Today
jthrough to the first thing you didn’t get tovto start selectingShift+Jto extend down through the next five thingsd→ “Tomorrow” → all five push to tomorrow in one write
Defer sets the start date marker (🛫) so the tasks vanish from planning views until that date — they’re still in your vault, just not in the way.
Bulk delete
Section titled “Bulk delete”Selecting twelve tasks and hitting Shift+Del opens one confirmation prompt covering all twelve. There’s no per-task confirm to click through. If you’re nervous, the dry-run version is to multi-select, look at the count in the header, then either Esc out or commit.
Deleted task lines are not recoverable from inside Pensum — restore from your sync provider’s version history (Obsidian Sync, iCloud, git, etc.) if you delete something you meant to keep.
In MCP
Section titled “In MCP”Most bulk semantics also work via agents, but as repeated single-task calls rather than a true batch tool:
plan.deferper task — call it in a loopplan.completeper taskplan.set_statusper taskplan.add_to_todayper task
The plugin’s bulk path is faster (one write per file vs. one write per task), but for agent workloads the per-task tools are usually fine — the bottleneck is the LLM, not the disk.
Why no “tag everything” bulk action
Section titled “Why no “tag everything” bulk action”Pensum deliberately keeps the bulk surface small. The four common batch operations (complete, defer, reschedule, delete) cover the workflows where doing things one at a time is genuinely painful. Bulk-add-tag and bulk-move-to-project are still per-task — they’re rarer, and the “select 20 tasks and apply one project” pattern is mostly handled by Smart Triage already.
If a batch action you reach for daily isn’t here, open an issue — bulk surface evolves based on what people actually do.