task_duplicate
Duplicate an OmniFocus task, optionally with subtask tree. The copy keeps editable fields and becomes a fresh active task placed next to the source or in a specified project, parent, or inbox.
Instructions
Duplicate an OmniFocus task, optionally including its entire subtask subtree when recursive: true. Editable fields copy over (name, note, defer/due dates, flagged, tags, estimate, repetition); system fields (id, timestamps) regenerate; completed/dropped state is NOT carried — the duplicate is a fresh, active task. Do NOT use task_duplicate as a substitute for task_move (which reparents the existing task) or task_create (when the new task's fields differ from the source). By default the clone lands alongside the source. Provide destination with exactly one of projectId, parentId, or toInbox: true to place it elsewhere. Returns { duplicated: true, sourceId, newId, descendantCount, name } — name is the source task's name (the duplicate carries the same name) so the agent can describe the new task without a follow-up read. Side effects: creates one new task (plus descendants if recursive) in OmniFocus, sets meta.syncPending = true. Example: task_duplicate({ id: "abc123" }) Example: task_duplicate({ id: "abc123", recursive: true, destination: { projectId: "prj456" } })
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Persistent ID of the task to duplicate. | |
| recursive | No | When true, clone the full subtask subtree depth-first. Default: false (clone only the task itself). | |
| destination | No | Where to place the duplicate. Exactly one of projectId, parentId, or toInbox: true. Omit to clone alongside the source. |