Agent overview
Kodik includes an autonomous coding agent that reads and edits files, runs terminal commands, searches the codebase, fetches URLs, drives the Integrated Browser for visual checks, and calls MCP tools — with every action visible in the chat and requiring your approval (or running automatically if you have configured auto-approve).
The agent operates in one of five modes that determine its behavior and the tools it can use:
| Mode | Purpose | Edits files? |
|---|---|---|
| Code (default) | Executes tasks: reads, edits, runs commands | Yes |
| Plan | Creates an implementation plan without changes | No |
| Ask | Answers questions about the codebase | No |
| Debug | Hypotheses → instrumentation → minimal fix | Yes |
| Educator | Teaches with explanations and interactive lessons | No project files |
See Modes for full details.
The agent has a set of built-in tools:
- Reading and navigation —
read_file,glob,rg(ripgrep),codebase_search - Editing —
edit_file,create_file,delete_file,edit_notebook - Terminal —
shell(run commands),get_terminal_output(poll background processes) - Network —
web_fetch(HTTPS only) - Browser —
browserto open local pages, inspect rendered UI, take screenshots, read console output, and interact with the page - Teaching —
check_understandingfor quick comprehension checks andcreate_lessonfor educator lessons saved under.kodik/teach - Utilities —
todo_write,memory,ask_questions,read_lints - Sub-agents —
sub_agentto delegate subtasks - MCP — any tools from connected MCP servers
The full tool reference is in Tools.
Key workflow capabilities
Section titled “Key workflow capabilities”Planning
Section titled “Planning”In Plan mode the agent explores the codebase and saves a structured plan via the generate_plan tool without making any changes. Switch to Code to start implementing. See Planning.
Checkpoints
Section titled “Checkpoints”Kodik automatically creates a checkpoint after each tool use, saving a snapshot of the workspace in a shadow Git repository. You can roll back to any checkpoint at any time. See Checkpoints.
Auto-approve
Section titled “Auto-approve”By default the agent asks for confirmation before every action. You can configure fine-grained permissions — allowing file reads, searches, specific command patterns, and more — while keeping control over edits. In Autopilot mode all actions are approved except commands on the blocked list. See Auto-approve.
Interrupted responses
Section titled “Interrupted responses”If a provider connection fails after Kodik has already shown text, thinking, or tool results, the partial work stays in the chat and is marked interrupted before the retry prompt appears. The retry prompt also includes compact progress context, so you can see what was preserved before starting a new provider attempt.
Choosing Retry reuses the original user message instead of adding a second copy. That single turn remains stable if you reload the window after the retry succeeds.
The Context Usage menu keeps its itemized system prompt, tool definitions, and conversation breakdown when a provider request fails or the window reloads; it does not replace those details with an unexplained aggregate token total.
If the failure happens while a tool or foreground sub-agent is still running, Kodik stops that work and settles the tool card before showing the retry prompt. Canceling during a permission hook also stays canceled; a late hook result cannot reopen the approval.
While Kodik is silently retrying a transient provider failure, the chat status changes from “Working” to a retrying message with the next attempt and backoff delay, so long waits do not look disconnected.
During long responses, live text and thinking are streamed as lightweight updates, so long chats and split-pane workspaces keep updating smoothly while full snapshots still handle reloads, tools, retries, reconnects, and fallback while the lightweight stream reconnects. Long transcripts render only the rows around the visible window, reducing work while you drag the scrollbar through an extended session. Offscreen streamed answers can unmount with the rest of the virtualized history, while the native scroll range and return-to-latest control continue to update correctly. Expandable details such as diffs, command output, reasoning, and search results are also mounted only while open and are removed after their close animation. Bursty text is revealed at a steady rate, incomplete Markdown keeps its final table, link, list, and code structure while it grows, and fenced code stays syntax-highlighted during streaming. While the transcript follows the live end, growing shell output, reasoning, and Markdown stay attached before the next paint instead of jumping away and snapping back. Scroll up to keep your reading position; dragging the browser-native transcript scrollbar back to the live end resumes automatic following even while the response keeps growing. When an expanded Thinking block collapses at the live end, its released height is held for the answer so the visible transcript does not snap down and back up, then any unused height closes smoothly once the turn settles instead of leaving a blank tail. You can also enable Anchor new turns in Settings → Agents to smoothly move each newly sent message near the top while its response grows below it; manual scrolling cancels the movement and releases that anchor. Kodik also saves in-progress streaming state periodically, so a restart during a long answer can restore recent partial work without rewriting the full history on every token.
Assistant Markdown uses an editor-scaled reading rhythm with clear headings, compact nested and task lists, and lightweight quotes. Existing inline code, fenced-code cards, and horizontally scrollable tables keep their familiar presentation. Successfully resolved workspace files use clickable icon pills with their filename intact, including relative Markdown links whose labels contain inline code. Every unresolved local file candidate—backticked, linked, directory-shaped, or an unformatted known-extension filename—uses the ordinary inline-code presentation instead of behaving like a web link.
In split-pane workspaces, Kodik keeps the visible pane selection matched to the host-selected chat session. If the host cannot switch sessions, the pane selection rolls back instead of routing the next untargeted chat action to a different session. Session, mode, model-selection, and auto-approval actions report failures back to the chat UI instead of silently treating unapplied changes as successful.
If the model keeps requesting tools past Kodik’s safety cap for one user turn, Kodik stops the tool loop and marks the chat as needing your guidance. It does not offer a Retry button for that state, because retrying would likely repeat the same loop; reply with narrower instructions to continue.
If Kodik restarts while a turn is streaming text or thinking, has already written assistant text but has not finished, waiting for approval, asking an interactive question, running a safe read-only tool, waiting for the model after a tool result, or compacting context, the restored chat no longer shows that old in-progress state as live. Streamed text, thinking, and assistant text from the interrupted turn come back as retryable context, completed tool rows stay visible with a retry path for the missing follow-up, safe read-only tool work can be retried from Kodik’s recorded provider snapshot without rerunning already completed tool results, unanswered question cards come back as read-only context, failed compaction is shown as a compact error, and the interrupted turn offers a retry where possible. Unsafe or incomplete tool work is not replayed automatically.
Queued follow-up messages typed while a turn was running are restored as editable queued drafts after restart.
Sub-agents
Section titled “Sub-agents”The agent can delegate isolated subtasks to sub-agents via the sub_agent tool. The sub-agent runs in its own context and returns results to the parent. See Sub-agents.
Browser preview
Section titled “Browser preview”In every chat mode where Browser is enabled in Harness, the agent can use the Integrated Browser with the same complete action set. It can start a local preview, take screenshots, read the console, resize the viewport, inspect elements, and interact with the page while you watch or take over. See Dev-server detection and Tools.
Reviewing changes
Section titled “Reviewing changes”All file edits appear in the changes panel in the chat. You can accept or reject each file individually and open a multi-file diff viewer. See Reviewing changes.