Skip to content

Task Management

As you use Kodik, every conversation is saved as a task after its first message starts a session. The task history panel shows started sessions immediately in the right workspace group, lets you navigate past work, pick up where you left off, and keep things tidy.

See Agent Overview for how tasks are structured.

Click the History button in the Kodik sidebar to open the task history panel. Tasks are sorted newest-first by default.

Drag the History panel’s inner edge to resize it down to a compact 144px width. As the chat area narrows, Kodik automatically shrinks History toward that limit while preserving a usable conversation area. History hides only when the panel cannot fit both minimums. Click the same sidebar button to reveal it again; its preferred width returns when more space is available.

Image

The first session group below Pinned keeps Filters beside an Open workspace folder-plus action. The header follows the active grouping—for example, a workspace name, Today, or Working—without inserting a separate label for the grouping mode. Open workspace uses the native folder picker and starts a new chat in the folder you choose. Workspace groups also keep an always-visible New chat action on the right for starting directly in that folder. Each session group can be collapsed and expands or closes with a short animation.

The search bar filters tasks by their initial message text or by the workspace path they were started in. Searches are case-insensitive and match substrings. When focused from the keyboard, the field uses the same clear 2px focus weight as the other sidebar controls.

Image

Open Filters and choose how sessions are grouped:

  • Workspace (default) — one group per workspace folder.
  • UpdatedToday, Yesterday, and Earlier groups.
  • Status — the first active status group appears first, followed by the remaining non-empty statuses.

You can order sessions by their latest update (default), creation time, or status. Results are paginated and scrolling loads the next page automatically.

Task rows also show the latest status: working, needs you, unread, done, failed, or stopped. A task that finishes while you’re looking at another session shows a blue unread dot until you open it (or send it another message) — then it reads as plain done. Restored and imported tasks keep their settled status in history before you open them.

The Cards section in Filters switches between two card layouts:

  • Detailed (default) — each card adds a second row with the session’s context: the workspace folder and the branch for sessions running in an isolated worktree (marked with a fork icon). The status is spelled out at the top-right of the card in the same color as its dot, and the relative update time (swapping to More actions on hover) moves to the bottom-right.
  • Compact — the previous one-row card: status dot, title, and update time.

The choice is remembered with the rest of the sidebar’s view settings.

Expand Workspace in Filters and choose All or one of the workspace roots represented in the loaded session history.

Toggle Archived sessions to show sessions you have archived. Archived sessions are hidden from the normal history list but are not deleted automatically.

Pinned sessions appear once in a dedicated Pinned section at the top of the sessions sidebar. Every session card, pinned or unpinned, remains draggable into a chat pane. Use Pin in a session’s row menu, or start dragging an unpinned session upward and drop it when the Pinned header changes to Drop to pin. Use Unpin from the row menu to return it to its normal group.

Each task row ends with its relative update time. Hover the row—or move keyboard focus to its trailing control—to replace that timestamp in place with More actions, without changing the row’s alignment. Hovering the displayed title or focusing its task card from the keyboard shows the complete session title in a tooltip when the row is too narrow to display it. Keyboard focus draws a complete inset outline around task rows and group headers, including the first control against a group edge.

Each task in the history list has the following actions:

  • Open — resume the task in the Kodik chat. The agent’s conversation history, file state, and model are restored to where the task was last left. Long conversations also reload their earlier transcript when Kodik initially shows only the latest bounded tail. User turns remain part of that transcript even when a provider rejects the request before producing an answer.
  • Pin / Unpin — keep the task in the dedicated Pinned section at the top of the sessions sidebar or return it to its normal workspace, time, or status group.
  • Rename — change the title shown in history and recent-session surfaces.
  • Export — save the full API conversation transcript as a Markdown file. The export includes all messages, tool calls, and tool results from the task’s history.
  • Archive / Unarchive — hide the task from the default history view or restore it from the archived view. Archiving keeps the session data on disk and does not schedule it for deletion.
  • Delete — remove the task and its stored data, including its favorite marker and saved checkpoint/review snapshot. This action applies only to the selected task. If the task is open, its chat tab is removed; Kodik shows a new blank draft only when that was the last open tab.

Active tasks keep running in the agent host even if you detach from the chat, reload the window, or open another window. When you reopen a task, Kodik loads a durable snapshot first and then follows new events from the host, so streaming text, tool waits, approvals, questions, and rejected user turns catch up without the transcript switching back to an older projection.

Each task has its own queue and status, and multiple tasks can run at the same time. If a tool needs the workbench UI, Kodik routes that request to the attached window; host-side file, search, and shell work can continue without an attached window, subject to the normal approval settings.

Click New Task (or use the keyboard shortcut) to start a fresh conversation. You can choose the workspace mode:

The agent works directly in your current workspace, reading and writing files in place. All changes are visible immediately in your editor alongside any other work in progress.

Kodik creates a dedicated Git worktree for the task under the .worktrees/ directory at your repository root. The agent works inside that isolated branch, so its changes are completely separate from your main working tree until you decide to apply them.

  • Requires at least one Git commit in the repository (the worktree is branched from HEAD).
  • The branch name is generated from the task title, prefixed with kodik/ by default (configurable via kodik.git.branchPrefix).
  • Resume an existing worktree: the footer’s worktree menu lists the repository’s existing worktrees below New worktree — pick one to resume it. The new chat then runs inside that worktree, keeping its branch and uncommitted changes, instead of branching a fresh one. (The keep-limit cleanup below can still remove an aged worktree, so resume one before it is reaped.)
  • While the task is active, the composer shows a Worktree badge. Open it to see the worktree name and reveal the folder in Explorer.
  • Review actions such as Keep and Keep all accept pending review state inside the task worktree only; they do not patch your main checkout.
  • To bring work back to your main branch, use the worktree folder/branch with normal Git workflows.
  • Worktrees are kept after the task ends, after you undo its changes, and after you delete the chat — a worktree you started is never auto-removed for those reasons.
  • When Automatically delete old worktrees is on (default), the keep limit (default: 15) is a hard cap: starting a new worktree force-removes the least recently active registered worktrees beyond the limit, including any uncommitted or unmerged work in them. Activity is based on files inside the worktree, not just when the folder was created. Worktrees used by running or restart-replayable tasks are spared, including tasks active in another Kodik window, and the same prune runs on startup. Turn the setting off to manage worktrees yourself.

Before a local task starts, the chat footer’s source-control menu switches branches and refreshes repository status through the workbench. After the task starts, it becomes a read-only branch chip scoped to that session’s selected folder. The chip stays visible and updates when the branch is switched outside Kodik, including while the chat remains open. If the host cannot complete a source-control action, Kodik reports the failure and keeps the current repository state rather than treating the unchanged branch as a successful switch.

The working-directory selector in the chat input footer (to the left of the local/worktree menu) sets the folder a new session runs in. It defaults to the opened workspace folder.

  • The button shows the working folder’s name. The menu lists the opened workspace folder(s), your recently-opened folders (the same list shown on the Welcome screen), and a Browse for folder… entry that opens your operating system’s folder picker — so you can point a session at any folder on your machine, including one outside the workspace.
  • The chosen folder becomes the session’s working directory: every tool the agent runs (file reads/writes, terminal commands, glob, search) operates relative to it.
  • In a Remote SSH window, opened and browsed remote folders keep their remote identity. File operations, terminal commands, project processes, and codebase search run on the SSH host rather than looking for the same path on your local machine.
  • The choice is persisted with the session (resuming restores it) and resets to the workspace default after you send, so a one-off folder choice never leaks into the next session.
  • With worktree mode, the worktree is created from the chosen folder’s Git repository.
  • Git worktree mode is currently local-only. In a Remote SSH workspace, use the default local-workspace mode; if worktree mode is requested, Kodik keeps the chat on the selected remote folder instead of running against a similarly named local path.
  • If the chosen folder no longer exists when the session starts, it falls back to the workspace folder and tells you.
  • If the folder picker or worktree listing cannot complete, Kodik reports the failure instead of silently treating it as a canceled pick or an empty worktree list.