Devin Task Board
A VS Code Activity Bar task board for organizing Markdown tasks, whether they are delegated to Codex, Claude, or Devin or owned by a human. Tasks can live anywhere beneath the task directory and carry their workflow status, repository context, milestone, and preferred agent in YAML frontmatter.
What's new in 0.15.19
Both Task Manager List modes now use a compact, mostly borderless milestone, story, and task hierarchy, with subtle neutral expanded-story surfaces. Milestones stay transparent in every state, and resting tasks inherit the same editor background. All hierarchy levels share the same right edge while retaining their left indentation. Milestones and stories have no decorative left edges; only task lists retain a hierarchy gutter and selected tasks retain a left selection edge. Selected milestone titles use a readable theme accent. Collapsed stories have no resting fill or horizontal separator. Milestone headings show a theme-primary progress bar, done/total task count, and dependency-blocked task count using the full milestone inventory. Story books and task icons distinguish completion, blockers, review, and todo alongside right-aligned rectangular workflow labels with soft blended borders. Leaf tasks always show their metadata and blockers, without collapse arrows. Stories and branches use thin down/right chevrons for expand/collapse. Rows open details without checkboxes or delete icons; task changes, including recoverable deletion under More actions, use the detail pane. Metadata and actions use neutral theme colors, and the current detail selection is distinct from hover and keyboard focus. Shared controls, Map content, details, and edit forms keep their existing styling.
Major features
Task board and workflow
- Select a task directory inside the current VS Code workspace.
- Use the fixed workflow:
todo, recurring, ready, in-progress, review, re-work, and done.
- Request Changes opens one multiline feedback editor. Save Re-work records a numbered request in the task and sets
status: re-work; Save & Send to Agent also queues a fresh handoff after saving.
- Re-work rows show Feedback Needed, Not sent, Queued, Session started, Send failed, Awaiting manual send, or Delivery unknown, according to the evidence available in the current extension session.
- Open the Devin Tasks panel in Attention mode to scan Needs Review, Re-work, Running, Waiting, In Progress, Ready, Backlog, Completed, and Scheduled tasks. Switch to All Tasks to browse the full workstream hierarchy.
- See each task's workflow status, next action, priority, milestone, owner, and current execution state together. Filter by text, milestone, owner, status, and priority; sort by priority, task age, or title.
- Use the row's Next Action command for the current workflow or queue step. The panel title shows the filtered count and hidden workspace attention, with a command to reveal hidden work.
- Open Task Manager from the sidebar toolbar or Command Palette. Select tasks in its List or Map to inspect their Markdown, metadata, relationships, recorded results, and review history in the same editor-area workspace. Filters, selection, and scroll context stay with the open manager.
- Browse a compact, mostly borderless milestone, user-story, Unassigned work, and task hierarchy in both Task Manager List modes, with stronger headings, subtle neutral expanded-story surfaces, and thin task separators. All hierarchy levels share the same right edge while retaining their left indentation. Milestones and stories have no decorative left edges; task lists retain the aligned hierarchy gutter and selected tasks retain their left accent. Resting tasks use the same inherited editor background as milestones. Milestones remain transparent even when hovered or selected; current milestone titles use a readable theme accent, and keyboard focus remains outlined. Collapsed stories have no resting fill, and stories have no horizontal separators. Counts, context-only ancestors, blockers, and explicit hierarchy warnings remain visible.
- See a compact milestone progress bar using the theme's primary button color, with a visible foreground fallback in high-contrast themes. Done/total tasks and dependency-blocked tasks remain visible when collapsed or filtered. Totals include all milestone tasks and exclude user-story headings; cancelled tasks count toward the total without counting as done. Each unfinished blocked task is counted once.
- Recognize stories by a book icon and task states by a green circled check for done, a lock for unfinished blocked work, a yellow dotted circle for review, and an outlined circle for todo. Other workflow states have distinct glyphs and retain their text badges. A done story gets a check only when its non-empty child inventory is entirely done.
- See each story's completed children out of its full child inventory, with explained cancellations counted separately. Task Manager shows dependency-unblocked and blocked children, names every resolvable blocker, and keeps invalid prerequisite diagnostics visible through filters and status changes. Dependency availability is shown separately from Submit eligibility.
- See newly created milestones in both Task Manager List modes even when they contain no stories or tasks.
- Read compact workflow labels at the right of task titles and expanded/collapsed story titles, with status-colored text over a soft tint of the same color, a slightly stronger blended border, and slightly rounded rectangular corners. Execution, priority, milestone, and owner metadata stay neutral. Distinguish the current detail selection from neutral hover and independently outlined keyboard focus; selecting an expanded branch accents only its heading.
- Select List rows with mouse or keyboard, without bulk checkboxes or inline delete icons. Leaf tasks always show their full metadata and blockers, with no collapse arrow or action; older saved task-collapse state is discarded when shown. Stories and branches remain collapsible using thin down/right chevrons. Click a row or its status label to inspect it; make task changes in the detail pane and use More actions for recoverable deletion of that task. Return review or re-work tasks to Ready with a revision check before submitting again.
- Keep the Task Manager open across VS Code restarts and retain its filters, sort, selection, expanded workstreams, and scroll context. Older saved List grouping is ignored safely.
- Restore an open Task Manager after restarting VS Code with its scripts and resources enabled, so the saved view can load.
- Open Task Manager even when extension storage contains unrelated or incomplete JSON; invalid recovery records are skipped and cannot be restored.
- Read rendered Markdown in Task Content and Recorded Results, with tables, lists, code blocks, images, and clickable links.
- Read rendered Markdown in Review and re-work history, including requested changes and agent responses.
- Open Task Map from the sidebar toolbar or Command Palette to reveal the manager's optional Map. Browse collapsible milestone sections and labeled relationship branches, including cross-milestone and filtered endpoints. Use Open in Default Editor when you want the configured Markdown editor.
- Approve a reviewed revision explicitly, skip to the next review, or save and send actionable re-work feedback from manager details. Approval records the reviewed revision; an intervening edit requires a fresh review. Human completion and recurring-occurrence acceptance are explicit actions.
- Select multiple visible tasks in the sidebar to set status, priority, or milestone. A sidebar row action uses the current selection only when that row is selected; otherwise it targets that row. Milestone changes preflight destination collisions and related-link rewrites, block selections that split a story from its children, and report blocked and skipped tasks.
- Use VS Code's native Tree View and the active file-icon theme for familiar Explorer-style folder and file icons.
- See compact, color-coded workflow badges and full status tooltips on valid task Markdown files in the Explorer, with darker In Progress and Review badges in light themes.
- Create a task from a status, priority, or milestone group's context menu and initialize it with that group's value. Recurring-group creation also collects the required schedule.
- Create tasks from the Explorer context menu on the configured task-directory root or one of its top-level milestone folders.
Recommended configuration:
{
"devinTaskBoard.directory": "devin-tasks"
}
Milestones and shared context
- Create one directory for every milestone and place new tasks directly in it.
- Discover manually created top-level folders beneath the task directory as milestones, including empty folders.
- Filter the board to one milestone or show all milestones.
- Create or open a workspace-root
AGENTS.md from the A toolbar action. A + badge means the file can be created; a check badge means it already exists.
- Seed workspace instructions with task claiming,
workDir, related-task, and task-documentation guidance.
- Use the sidebar
M and A Create actions to open the selected milestone's reviewed MILESTONE.md or AGENTS.md draft in Task Manager. Present-file actions open the file. The Task Manager checklist shows a separate present or advisory missing state with Open or Generate beside each of MILESTONE.md, AGENTS.md, and SKILL.md, even for empty milestones.
- Missing context files remain advisory and do not block task creation, generation, or submission. The sidebar skill action opens an existing
SKILL.md or routes a missing one to the selected milestone's reviewed generation flow.
- Set a milestone to
open or closed from its right-click Status submenu. The state is stored in workspace settings without modifying or moving task files.
- Select a milestone in Task Manager to see its state, story and task counts, status summary, context checklist, and selectable stories. Generate missing
MILESTONE.md, AGENTS.md, and SKILL.md documents through guided agent questions, a complete brief, or finished Markdown. Review the Markdown before confirming an exclusive save; selection and cancellation create no file. Existing files open without being overwritten. Edit existing MILESTONE.md with revision and dirty-document checks, change milestone state, or draft a user story with the milestone preselected.
- Edit execution defaults from a milestone in Task Manager. Review effective values, sources, diagnostics, and affected task IDs before saving.
- Move a story and every valid child together after destination and document preflight, or cancel. Moving a child alone requires explicitly clearing its parent or selecting another valid story in the destination milestone. Generic relative links follow file moves.
- Turn milestone file moves on or off with
devinTaskBoard.moveTaskFilesOnMilestoneChange. The setting defaults to on.
- Hide or restore both completed tasks and closed milestones with the persistent toolbar visibility toggle.
Recommended configuration:
{
"devinTaskBoard.milestones": ["release-1", "documentation-refresh"],
"devinTaskBoard.moveTaskFilesOnMilestoneChange": true,
"devinTaskBoard.milestoneStates": {
"release-1": "open",
"documentation-refresh": "closed"
},
"devinTaskBoard.workspaceAgentsTemplate": "# Task board workflow\n\nTasks are stored under `{{taskDirectory}}`.\n",
"devinTaskBoard.milestoneTemplate": "# {{milestone}}\n\n## Goals\n\n## Architecture\n\n## Decisions\n",
"devinTaskBoard.agentsTemplate": "# {{milestone}} working rules\n",
"devinTaskBoard.skillTemplate": "# {{milestone}} agent guidance\n"
}
Milestone names and states are normally maintained through the board. Customize the four context-file templates when newly created files need repository-specific structure or instructions.
- Create feature, bug, and documentation tasks from the + button.
- Create
user-story tasks from both standard and related-task creation. The stored frontmatter value is user-story, displayed as User Story in pickers.
- Use Draft User Story from Idea from the
devin-tasks folder or a milestone's context menu, or from the Command Palette. Enter a multiline idea, review the milestone and agent choices, and choose whether the drafting session should ask follow-up questions. The command creates one reviewable user-story task and submits it to the existing queue.
- Inherit the task owner or explicitly select Codex, Claude, Devin, or None for human ownership.
- Assign every new task a quoted
TSK-XXXXXXXXXXXX ID that remains stable when the task file moves.
- New ordinary, related, and generated tasks omit inherited execution fields. Explicit choices stay in frontmatter, even when they match the current inherited value; milestone and story changes then update only tasks without overrides.
- See effective
workDir, agent, model, reasoning, and run mode with their sources in Task Manager and task editors. Clear a stored override to resume inheritance. Human-owned tasks show agent settings as inactive while retaining their stored values.
- Resolve
workDir from task, owning story, milestone, then workspace root (.). Existing tasks use a workspace folder picker when it changes.
- Store explicit provider-specific model, reasoning, and
runMode choices in frontmatter. Omitted values inherit from the story or milestone before using configured fallbacks.
- Assign an optional
parentTask task ID to a non-user-story task when its parent is a unique user story in the same milestone. Task Manager and the task editor offer eligible stories or an unassigned choice. Ownership stays separate from relatedTasks.
- Generate tasks from a done user story in Task Manager through an interactive planning session. The agent drafts each child's Markdown and sends its final proposals to the review panel automatically. Confirm once to create the Markdown files in the story's milestone. Omitted execution fields inherit live story and milestone values; proposed fields become explicit overrides. Children start in
todo without submission. Reruns show existing children and add only newly confirmed work.
- Review each generated child's full Markdown and prerequisite references before confirmation. New proposals use unique keys to refer to each other, and existing children use stable task IDs. Invalid links or cycles disable confirmation; failed saves remove files created by that confirmation.
- Keep task inventory discovery read-only: missing IDs receive temporary display keys, while duplicate stored IDs remain visible for hierarchy validation.
Recommended configuration:
{
"devinTaskBoard.defaultAgent": "devin",
"devinTaskBoard.modelOptions": {
"codex": ["gpt-5.6-sol", "gpt-5.6-terra"],
"claude": ["sonnet", "opus"],
"devin": ["adaptive", "opus"]
},
"devinTaskBoard.defaultModels": {
"codex": "gpt-5.6-sol",
"claude": "sonnet",
"devin": "adaptive"
},
"devinTaskBoard.defaultReasoning": {
"codex": "medium",
"claude": "high"
},
"devinTaskBoard.newTaskTag": "devin"
}
Agent sessions
- Resume a saved Codex, Claude, or Devin conversation from the third task-row button or Resume Session below Submit Task in the board and Explorer context menus.
- Reveal an existing terminal or select a conversation to queue an interactive continuation, including conversations originally run in silent mode. History retains the original provider when the task's agent changes.
- Track up to 20 recent sessions per workspace folder and taskID locally, preserving associations across task moves and editor reloads. Use Enter a session ID to link older conversations or recover when automatic capture is unavailable.
- Stop scheduled session ID lookup retries when their terminal closes.
- Resume Codex sessions on Windows with
--no-daemon to avoid flashing console windows during command execution.
- Resume Codex sessions on Windows with
--no-alt-screen to use its inline display.
- Disable Codex's fullscreen transcript in fresh and resumed interactive Windows sessions to avoid mouse-reporting characters appearing in the terminal prompt.
- For re-work, Resume Session offers a fresh handoff or Copy Re-work Prompt & Open Session. Copying leaves the request awaiting manual send; plain resume does not claim delivery.
- Queue a fresh session from a task row's play button or from the Command Palette for the recognized task in the active editor.
- Show Submit Task only for tasks assigned to Codex, Claude, or Devin; human-owned tasks remain available for normal workflow editing without an agent session.
- Choose Silent to run once and advance automatically, or Interactive to keep the agent session available for follow-up prompts even after workflow completion, until its terminal closes or the user completes it manually.
- Pass each task's optional model and reasoning values to the selected Codex, Claude, or Devin CLI when that CLI supports them.
- Keep built-in workflow prompts focused on task completion metadata without telling agents that the terminal will close or the next task will start.
- Fresh ordinary and re-work handoffs explicitly ask agents to read an existing milestone
SKILL.md by repository-relative path. The skill file is checked when the session starts, including after queueing; resumed conversations do not replay a handoff. Customize the complete prompt with devinTaskBoard.sessionPromptTemplate and its optional skill path or read-instruction slugs.
Recommended configuration:
{
"devinTaskBoard.codexCommand": "codex",
"devinTaskBoard.claudeCommand": "claude",
"devinTaskBoard.devinCommand": "devin",
"devinTaskBoard.devinPermissionMode": "smart",
"devinTaskBoard.sessionPromptTemplate": "Work on {TASK_FILE} from {WORK_DIR}. Read {AGENTS}, {MILESTONE}, and {MILESTONE_AGENTS}. {MILESTONE_SKILL_INSTRUCTION} {WORKFLOW_INSTRUCTIONS}"
}
Keep each command as an executable on PATH, or replace it with an absolute path. Set devinPermissionMode in workspace settings only after choosing the appropriate mode from the Devin permissions documentation; smart above is an example, not a default. The default prompt template already supplies the normal task-board workflow; customize it only when the agent needs different or additional instructions.
On Windows, resumed Codex sessions use --no-daemon by default. This requires Codex CLI 0.156.0 or newer. If you must use an older CLI, set "devinTaskBoard.codexNoDaemon": false in machine settings. Fresh Codex sessions and other agents do not use this option.
Resumed Codex sessions on Windows also use inline terminal mode by default. Set "devinTaskBoard.codexResumeInline": false in machine settings to restore the alternate screen.
Fresh and resumed interactive Codex sessions on Windows disable the fullscreen transcript by default because its mouse reporting can appear as text in affected integrated terminals. Set "devinTaskBoard.codexDisableFullscreenTranscript": false in machine settings to use Codex's configured transcript mode. Restoring Codex's fullscreen transcript on resumed sessions also requires "devinTaskBoard.codexResumeInline": false. Existing open terminals need to be closed and launched again to pick up these changes.
Session tracking starts with conversations launched by this release. Claude receives a generated session UUID; Codex uses a unique prompt marker and its local App Server to discover the matching CLI/exec conversation; Devin exports a conversation into the extension's private workspace storage so its ID can be captured after a turn. Devin exports are removed after the terminal closes and the ID is saved; an interrupted capture can leave an export there for later recovery. Automatic capture requires CLI support for these interfaces. If a provider session has been deleted or capture is unavailable, use Enter a session ID with another existing conversation's exact ID. Resume never selects the provider's most recent conversation implicitly and never replays the original task prompt. It leaves task status and run-mode frontmatter unchanged.
Agent task queue
- Submit manual and due recurring delegated tasks to one first-in, first-out queue so only one agent terminal runs at a time. Recurring human-owned tasks remain tracked without being auto-submitted.
- Validate effective execution settings at submission, then reload task, story, milestone, and workspace values before each fresh launch. Invalid settings or human ownership stop that queued start with the conflicting source, correction, and editor route. Active sessions and resumed conversation IDs retain their settings.
- Check every prerequisite when submitting a fresh session, including recurring and re-work starts. Recheck the complete task inventory immediately before a queued launch; unfinished or invalid prerequisites stop that launch with specific reasons while task files and active sessions remain intact.
- Re-work queue entries retain their request ID and feedback revision. The queue checks the current task before launch, rejects stale feedback, and permits a saved request to be retried after a failed send.
- Default new tasks and tasks without a valid
runMode to interactive execution, keeping the active agent available for follow-up instead of encouraging unattended queue stacking.
- Select silent or interactive execution per task. Queue Manager displays the stored mode for running and waiting work.
- Run Devin non-interactively only when the workspace explicitly configures
devinTaskBoard.devinPermissionMode; otherwise open Devin interactively with a terminal notice explaining the fallback.
- Advance automatically whenever the active terminal closes. For silent sessions, also use task workflow completion as a fallback: normal tasks complete on a transition to
review or done, and recurring runs set lastCompletedDate.
- Keep interactive sessions running when their task reports workflow completion, allowing follow-up prompts; close their terminal or use Complete Active Task to advance the queue.
- Use the Devin Tasks panel to see running and waiting state beside workflow status. The separate Queue Manager remains available for detailed queue and recurrence diagnostics with a live time-remaining display.
- Use the Queue Manager's Complete Active Task action to close a lingering terminal and advance manually when a custom prompt or CLI does not emit the normal completion signal.
- Use Task Manager to submit ready delegated work, resume or reveal a session, remove waiting entries, clear waiting work, and release an active queue slot. Queue operations do not approve or delete task files.
Recurring tasks
- Configure daily, weekly, bi-weekly, or monthly schedules from the Recurrence submenu.
- Check schedules at startup and at one configurable global interval, queue due work through its preferred agent, and record
lastRunDate when its terminal starts.
- Catch up once after downtime instead of launching every missed occurrence.
- Distinguish scheduled work with the
recurring status, a sync icon, and recurrence details in the task row.
- Inspect a task's next run and recorded latest run/completion in Task Manager. Edit or clear its recurrence fields in the embedded task form.
Recommended configuration:
{
"devinTaskBoard.recurringCheckInterval": "+1min"
}
Increase the interval, for example to +5min or +1hr, when minute-level scheduling is unnecessary. Changes take effect without reloading VS Code.
Task editing and relationships
- Open Edit Task from the Tasks panel, Explorer, an active task editor, or the Command Palette. Edit title and task frontmatter properties including type, status, priority, milestone,
workDir, tags, ownership, execution, schedule, and related tasks in one view. Approval, human completion, and re-work use their dedicated actions.
- Create tasks, related tasks, and user-story drafts inside Task Manager without submitting them. Its embedded form edits task Markdown body and metadata while retaining unknown frontmatter and task identity; dirty or changed Markdown blocks stale saves.
- Use agent-dependent model and reasoning choices. Human ownership makes agent-only settings inactive; recurring status requires a schedule. System dates and task ID are read-only.
- Save task details in one workspace edit with dirty-document and external-change checks. Open Markdown for unsupported frontmatter, and confirm before discarding unsaved form edits.
- Opening a task from the board, Queue Manager, or Edit Task uses the default editor selected in VS Code for Markdown files.
- Create a related task from the + action on a task row, inheriting the source task's milestone,
workDir, agent, model, reasoning, and run mode.
- Relate existing tasks through a multi-select picker or by dropping one task onto another. Both paths write duplicate-safe reciprocal Markdown links to
relatedTasks frontmatter.
- Add or remove an existing child task's same-story prerequisites in Task Manager. The picker shows titles and stable IDs, keeps invalid stored references visible for explicit removal, and rejects cycles, invalid ownership, malformed dependency edits, and stale inventory changes while retaining the draft.
- Drag a task onto a status indicator to update only its YAML status without moving the file.
- Delete inactive selected tasks from Task Manager with a recovery record for file contents and affected incoming related-task links. Children retain their stored
parentTask and appear as unresolved work until the same story ID returns. Restoration preserves intervening edits and refuses path or task ID collisions.
Storage and compatibility
- Store same-story prerequisites as a
dependsOn YAML sequence of stable task IDs. Discovery retains malformed entries for repair, diagnoses invalid or unfinished prerequisites, and leaves task files unchanged. Only done prerequisites satisfy a dependency.
- Find task files recursively so users can organize files and subdirectories however they prefer.
- Open files in the editor and watch Markdown files and workspace settings for changes.
- Preserve user-controlled task locations for status and metadata edits; changing a task's milestone is the one operation that moves it into another milestone directory.
- Watch for recognized tasks added or moved into the configured task directory, backfill
taskID values during the resulting scan, repair duplicates while preserving the first path-ordered occurrence, and leave unrelated Markdown untouched.
- Coexist with Markdown Task Board through separate extension IDs, settings, state, storage, and a Devin-specific task marker.
Settings
{
"devinTaskBoard.directory": "devin-tasks",
"devinTaskBoard.recurringCheckInterval": "+1min",
"devinTaskBoard.defaultAgent": "devin",
"devinTaskBoard.modelOptions": {
"codex": ["gpt-5.6-sol", "gpt-5.6-terra"],
"claude": ["sonnet", "opus"],
"devin": ["adaptive", "opus"]
},
"devinTaskBoard.defaultModels": {
"codex": "gpt-5.6-sol",
"claude": "sonnet",
"devin": "adaptive"
},
"devinTaskBoard.reasoningOptions": {
"codex": ["minimal", "low", "medium", "high", "xhigh"],
"claude": ["low", "medium", "high", "xhigh", "max"]
},
"devinTaskBoard.defaultReasoning": {
"codex": "medium",
"claude": "high"
},
"devinTaskBoard.codexCommand": "codex",
"devinTaskBoard.claudeCommand": "claude",
"devinTaskBoard.devinCommand": "devin",
"devinTaskBoard.devinPermissionMode": "smart",
"devinTaskBoard.sessionPromptTemplate": "Work on {TASK_FILE} from {WORK_DIR}. Read {AGENTS}, {MILESTONE}, and {MILESTONE_AGENTS}. {MILESTONE_SKILL_INSTRUCTION} {WORKFLOW_INSTRUCTIONS}",
"devinTaskBoard.newTaskTag": "devin",
"devinTaskBoard.milestones": ["release-1", "documentation-refresh"],
"devinTaskBoard.moveTaskFilesOnMilestoneChange": true,
"devinTaskBoard.milestoneStates": {
"release-1": "open",
"documentation-refresh": "closed"
},
"devinTaskBoard.workspaceAgentsTemplate": "# Task board workflow\n\nTasks are stored under `{{taskDirectory}}`.\n",
"devinTaskBoard.milestoneTemplate": "# {{milestone}}\n\n## Goals\n\n## Architecture\n\n## Decisions\n",
"devinTaskBoard.agentsTemplate": "# {{milestone}} working rules\n",
"devinTaskBoard.skillTemplate": "# {{milestone}} agent guidance\n"
}
The three command settings accept an executable name available on PATH or an absolute path. Queueing a task starts it immediately when no other agent terminal is active; otherwise it waits in submission order. When the task reaches the front, the extension creates a visible integrated terminal at the workspace root. runMode: "silent" selects the documented non-interactive Codex and Claude forms. Devin uses its non-interactive form only when the workspace explicitly configures devinTaskBoard.devinPermissionMode; without that setting, Devin opens interactively so approval prompts remain available. runMode: "interactive" keeps every CLI available for follow-up prompts. Optional model and reasoning arguments are added from the task frontmatter:
codex exec --cd <workspace> --skip-git-repo-check [--model <model>] [--config model_reasoning_effort="<reasoning>"] <prompt>
claude --print [--model <model>] [--effort <reasoning>] <prompt>
devin [--model <model>] --permission-mode <workspace-setting> --print -- <prompt>
Interactive Codex omits exec and --skip-git-repo-check; interactive Claude omits --print; interactive Devin omits both --print and the permission-mode override. Interactive is the default for new tasks and for manually authored or existing tasks without a valid runMode. Silent execution must be selected explicitly and never implies a Devin permission level.
To opt a workspace into silent Devin tasks, add an explicit value to .vscode/settings.json:
{
"devinTaskBoard.devinPermissionMode": "smart"
}
The extension accepts normal, accept-edits, smart, or dangerous and passes the selected value directly to Devin. This setting has no default; only workspace and workspace-folder values are honored, so a user-level setting cannot silently grant permissions to another repository. If it is missing or invalid, the terminal explains the interactive fallback, shows the example above, and links to the Devin CLI permission documentation. Permission modes that can still prompt may prevent a print-mode task from finishing unattended, while dangerous auto-approves every tool call. Queue only trusted prompts with the permissions appropriate for that workspace. Devin print mode still cannot show its workspace-trust prompt, so a silent launch fails in a directory that Devin does not trust instead of bypassing that safety check. Organization-level permission rules remain authoritative.
Install and authenticate the CLI for every agent you plan to use. The task board does not store provider credentials. If an executable is installed outside PATH, point its command setting at that executable.
devinTaskBoard.sessionPromptTemplate replaces the complete prompt submitted when a task session starts. It supports these single-brace slugs:
{TASK_FILE} (or {TASK}) and {WORK_DIR} for the selected task's repository-relative file and working directory.
{WORKSPACE_AGENTS_FILE} (or {WORKSPACE_AGENTS} / {AGENTS}), {MILESTONE_FILE} (or {MILESTONE}), and {MILESTONE_AGENTS_FILE} (or {MILESTONE_AGENTS}) for repository-relative context-file paths.
{MILESTONE_SKILL_FILE} (or {MILESTONE_SKILL}) for the repository-relative milestone SKILL.md path when that file exists, and {MILESTONE_SKILL_INSTRUCTION} for a complete read instruction only when it exists.
{MILESTONE_NAME} for the task's milestone and {WORKFLOW_INSTRUCTIONS} (or {WORKFLOW}) for the normal versus recurring status guidance.
Milestone slugs expand to an empty string when the task has no milestone. The skill path and instruction also expand to empty text when SKILL.md is missing. Include {MILESTONE_SKILL_INSTRUCTION} in a custom template for a safe optional read instruction; a literal Read {MILESTONE_SKILL_FILE} leaves incomplete prose when the file is absent. Unknown slugs remain unchanged. The default template preserves the built-in task path, workDir, context-reading, and status-workflow instructions; omit any slug from a custom template to omit that material from the submitted prompt. The extension names an existing skill for the agent to read; it does not install or automatically load that guidance into any provider.
The queue advances whenever the active terminal closes; VS Code does not expose terminal screen text for extensions to scrape. For silent sessions, it also watches the active task file as a fallback. A non-recurring silent task completes when its status transitions to review or done. The default recurring prompt tells the agent to retain status: recurring and write an ISO lastCompletedDate after finishing the occurrence. The queue then disposes any lingering silent terminal and starts the next waiting task. Workflow-completion signals never dispose an interactive terminal, so the user can continue the conversation; close that terminal or use Complete Active Task in Queue Manager to advance. Custom prompt templates that omit {WORKFLOW_INSTRUCTIONS} must supply equivalent silent-session completion instructions or rely on terminal/manual completion.
The task directory and every workDir must stay inside the current workspace.
devinTaskBoard.milestoneStates records each explicitly managed milestone as open or closed in workspace settings. Existing milestones without an entry remain open. The board's hide/show toolbar action applies to both done tasks and closed milestones, including all tasks assigned to a closed milestone.
devinTaskBoard.recurringCheckInterval is one extension setting that controls the check cadence for every recurring task. It defaults to +1min and accepts a positive whole number followed by min or hr, including +5min, +1hr, and +60min. Changes take effect without reloading VS Code. The extension still performs one immediate check when it activates. Due occurrences join the same FIFO queue as manual work, and lastRunDate is recorded only when the occurrence actually starts.
The four context-file template settings can be set in VS Code user settings or overridden per workspace. They support {{workspaceName}}, {{workspaceSlug}}, and {{taskDirectory}}; milestone templates also support {{milestone}}. Templates are applied only when a file is first created. Existing files open without changing their contents. Task Manager requires review and confirmation before saving a newly generated milestone document.
The default workspace AGENTS.md instructs an agent to claim a ready task by changing its status to in-progress before discovery, keep it there during implementation and verification, and move it to review when the work is ready for review. Automatically launched recurring tasks stay in status: recurring so later occurrences remain scheduled. Codex discovers repository-root AGENTS.md files when starting a task; start a new Codex task after creating or changing the file so the latest instructions are loaded.
Task files are recognized recursively beneath the configured task directory when agent is codex, claude, devin, or none and a status field is present. Status changes are written in the unquoted form status: todo. Keep both fields intact when authoring tasks manually.
Storage layout
The optional workspace instructions sit at the workspace root. Each milestone can own shared context and working-rule files alongside its task files:
workspace/
AGENTS.md
devin-tasks/
release-1/
MILESTONE.md
AGENTS.md
SKILL.md
task-a.md
task-b.md
any-user-defined-subdirectory/
task-c.md
New tasks are stored at <task-directory>/<milestone>/<task-file>.md. Existing and manually authored tasks may be placed anywhere below the configured task directory. Changing a task's milestone moves it to <task-directory>/<new-milestone>/<task-file>.md by default. Set devinTaskBoard.moveTaskFilesOnMilestoneChange to false to update the milestone without moving the file or rewriting related-task links. Other metadata changes do not move or delete task files.
Task files use this frontmatter and add the task title as an H1. Execution fields may be omitted to inherit values; this example shows explicit overrides:
---
agent: "codex"
taskID: "TSK-7K3M9Q2X5R8D"
model: "gpt-5.6-sol"
reasoning: "high"
runMode: "interactive"
status: todo
priority: "medium"
milestone: "release-1"
type: "feature"
workDir: "packages/api"
creationDate: "2026-09-21T14:00:00.000Z"
startDate: "2026-09-22T14:00:00.000Z"
recurrence: "weekly"
lastRunDate: "2026-09-29T14:03:00.000Z"
lastCompletedDate: "2026-09-29T14:18:00.000Z"
tags: devin
relatedTasks:
- [Related task](<./related-task.md>)
---
# Task title
taskID uses the stable TSK-XXXXXXXXXXXX format: the suffix contains 12 random uppercase Crockford Base32 characters and omits visually ambiguous letters. Generation checks every task currently visible in the workspace and retries a collision. When the board discovers a recognized existing task without an ID—including a manually authored file added or moved beneath the configured task directory—it adds one in place. If copied files contain a duplicate ID, the first task in path order keeps it and later duplicates receive new IDs. Valid task types are feature, bug, documentation, and user-story. workDir is relative to the workspace folder; use . for the repository root.
Recurring tasks use status: recurring plus startDate and recurrence. Supported recurrence values are daily, weekly, bi-weekly, and monthly; lastRunDate is added automatically after a scheduled launch, and the agent writes lastCompletedDate when the occurrence finishes so the queue can advance. Dates are stored as ISO 8601 timestamps. Monthly schedules remain anchored to the original day and use the month's final day when that day does not exist, such as a January 31 schedule running on February 28. A due schedule catches up once after VS Code was closed rather than opening a terminal for every missed occurrence. VS Code must be running for the extension to start a session.
Choose Recurrence → Configure Recurrence... on a task to select its first local date/time and repeat interval. This changes the task to status: recurring; choosing another status pauses automatic launches without deleting the schedule. Choose Recurrence → Remove Recurrence to delete startDate, recurrence, lastRunDate, and lastCompletedDate; an active recurring task returns to status: todo.
Valid task-agent values are codex, claude, devin, and none. The none value marks a human-owned task: it remains on the board and participates in normal status, milestone, recurrence, and relationship workflows, but it has no Submit Task action and is never added to the agent queue. devinTaskBoard.defaultAgent is the workspace fallback when task, story, and milestone omit an agent. An explicit agent: none remains a human-ownership override.
Valid task run modes are silent and interactive. New tasks inherit the owning story or milestone mode when present, otherwise they use interactive. Related tasks use the same resolution path; their source task does not become an execution-settings parent. The Queue Manager still shows a terminal for silent work; “silent” describes the one-shot CLI lifecycle rather than hiding process output.
The optional model field is passed directly to the selected agent as --model <model> when starting a session. Omit it to inherit from the owning story or milestone, then use the configured provider default. Model names and aliases are provider-specific; for example, a task may use model: "gpt-5.6-sol" with Codex or model: "sonnet" with Claude. Model and reasoning settings remain inactive for human-owned tasks.
Use devinTaskBoard.modelOptions to define the provider-specific choices shown during task creation and from the task's Model Name submenu. devinTaskBoard.defaultModels supplies the provider fallback when no task, story, or milestone model is set. A configured default does not need to appear in modelOptions; the board includes it automatically. Choose Inherit model during creation to omit model from the task.
The optional reasoning field is supported for Codex and Claude tasks. Use devinTaskBoard.reasoningOptions to customize the picker values and devinTaskBoard.defaultReasoning as a fallback when no task, story, or milestone reasoning is set. The board passes Codex reasoning through model_reasoning_effort and Claude reasoning through --effort. Available levels depend on the selected model. Choose Inherit reasoning during creation to omit reasoning from the task.
Devin CLI currently exposes thinking-level changes interactively with Alt+T (Option+T on macOS), but does not document a startup reasoning flag. The board therefore does not write or apply reasoning for Devin tasks.
VS Code draws indentation guides for every child in a native Tree View, including files. Extensions cannot hide a guide for one view or one item without replacing the native tree. To hide these guides globally, set "workbench.tree.renderIndentGuides": "none" in VS Code settings.
Related tasks use the source task's milestone for placement, then resolve execution settings from their own overrides, owning story if selected, milestone, and workspace fallbacks. Each file receives a reciprocal relative Markdown link in its relatedTasks YAML frontmatter list. Additional relationships selected from the context menu or created by dropping one task onto another are appended without duplicating an existing link.
Re-work requests are appended under ## Review History as ### RW-001 - Changes requested - <ISO timestamp> entries. Each request includes a Revision: <SHA-256> line and a required Requested change: field; optional observed behavior, expected behavior, reproduction steps, evidence, and acceptance checks follow. An agent records a separate ### RW-001 - Agent response - <ISO timestamp> entry with changes, verification, and unresolved items. New requests preserve earlier rounds and the original requirements. Manually setting status: re-work without a usable request shows Feedback Needed. Local delivery indicators are lost on extension reload and then show Delivery unknown; the extension does not resend automatically.
Development
npm install
npm test
Press F5 in VS Code to launch an Extension Development Host, then open the Devin Tasks icon in the Activity Bar.