Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Codify Agent WorkflowNew to Visual Studio Code? Get it now.
Codify Agent Workflow

Codify Agent Workflow

Sidiora Labs

|
2 installs
| (0) | Free
The whole agent workflow in your editor: code graph navigation, a live task board with verified completion, scope diagnostics, and project memory — all from the cg binary.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Codify for VS Code

The whole Codify workflow, inside the editor. Everything is driven by the cg binary — the extension holds no state and never parses specs or code itself, so it cannot disagree with the CLI.

Code navigation from the graph

The extension runs cg lsp and speaks the Language Server Protocol to it, so every language Codify indexes gets real editor support with no compiler, no toolchain, and no project configuration:

Feature Backed by
Go to definition, find all references The symbols and refs tables
Hover What the symbol is, how many references it has, and the decisions recorded about it
Go to symbol in workspace / in file The trigram index — instant, no warm-up
Code lens Reference count and test-reference count above every function, so coverage gaps are visible while reading
Problems kvx parse errors, and files edited outside the in-progress task's declared touches

That last row is the point. Scope drift shows up as a squiggle at the moment of the edit — for you and for whatever agent is working alongside you — instead of waiting for someone to run a command. It is a warning, never an error: Codify advises, and only --strict enforces.

Turn it off with codify.languageServer if you want the task board alone.

Task board

A "Codify" container in the activity bar, with two views.

Tasks shows the active feature's plan the way Codify sees it:

  • Tasks grouped by dependency wave, with per-wave progress and status icons. The next eligible task is marked; implemented tasks are shown as qualification pending rather than done.
  • Expanding a task reveals its verification data from cg spec trace: declared symbols with resolved location, kind and reference count; touched-path patterns with whether a matching change exists; the commits tagged with the task; and the memories written under it.
  • Inline actions run the real workflow — start, mark implemented, complete. cg spec done is refused when verify_cmd or the graph checks fail, with the failing checks shown in the Codify output and a deliberately awkward, modal "Force done anyway" escape hatch.
  • In parallel mode, tasks show who holds their lease, and claim/release actions appear.

Memory lists recent decisions, constraints and facts, grouped by type, with the task each was written under. Add one from anywhere with Codify: Remember a Decision — if a file is open, it is anchored to that file automatically.

The agent view

The Codify sidebar has an Agent view — a persistent chat with Claude Code or Codex, always there, no task required. The extension speaks the Agent Client Protocol to the agent's ACP adapter (claude-code-acp or the maintained @agentclientprotocol/codex-acp). A lightweight connection on view open discovers past sessions; a working session starts when you send or restore one. Every working session runs in the workspace with Codify's own MCP server injected (cg mcp), so the agent has the full graph, spec, and memory toolset without any per-repo MCP config. A provider picker in the header switches between Codex, Claude Code, and a Custom ACP command for the next chat; the choice is remembered per workspace. The ⚙ gear next to it (also Codify: Configure Agent Provider) is a quick pick that switches provider, edits each adapter's launch command in place, or opens the codify.acp settings. The + New Agent Chat button on the view resets to a fresh session.

The Past sessions selector merges compact workspace history remembered by the extension with the adapter's ACP session/list results. Titles are cleaned before they are shown: harness prefixes such as Claude Code's local-command caveat are stripped, a /clear session is titled by its command, and a session that begins with a context-compaction summary is titled ↻ continued: <what the work was about>, since Claude Code opens a new session file at every compaction. Selecting one uses session/load for transcript replay, or session/resume when the adapter only supports context restoration; that limitation is stated inline. Refresh asks the selected adapter again. Adapters without session lifecycle support leave locally known entries visible but never claim that history was restored.

The session bar shows the connected adapter and injected codify MCP server. Agent-provided ACP modes and session options appear as native controls, so Codex and Claude Code can expose their own plan/agent mode, model, or reasoning choices without extension-specific wiring. The bar also follows agent-generated session titles and context-window usage. Agent-native slash commands join the composer palette; collisions are namespaced as /agent-<name> so commands such as Codify's /review always keep their meaning.

The view streams replies and collapsed thinking, renders each tool call as an expandable card — kind badge and colour, status tick, elapsed time, the raw input, locations, and diffs — tracks the plan, and surfaces permission requests as buttons — allow once, always, reject — answered inline, never in a modal. Sub-agents (Claude Code Task calls, ACP agent tool kinds, or any delegation-shaped call) get their own card showing the delegated prompt, and the tools they run nest underneath with a running count. A compact activity line keeps the current turn, tool totals, sub-agents, plan progress, permissions, and queued follow-ups visible even when their detailed cards are collapsed; beneath it a tool timeline draws one dot per call this turn (pulsing while running, green or red when finished; click one to jump to its card) and a now line names the call in flight. When the turn ends, a summary pill states whether it completed, how many tools ran and failed, how many sub-agents were used, how many files were touched, and how long it took. Context-window usage is drawn as a bar that turns amber past 70% and red past 90%. File reads and writes requested over ACP are workspace-scoped; paths outside the root are refused. Stop cancels the in-flight turn (session/cancel), while messages typed during work are visibly queued for the next turn.

Text the harness injected into the user role during a replayed session (the local-command caveat, <command-name> blocks, and compaction summaries) never becomes a user bubble: commands appear as a one-line note, and a compaction summary collapses into a labelled note whose text can still be opened. Replies render as safe markdown — headings, emphasis, nested and task lists, tables, quotes, inline code, and fenced code blocks with a copy button and the language on the rail. Any file path the agent mentions (src/graph.c, editors/vscode/acp.js:42) opens at that line, tool locations do the same, and web links open through VS Code rather than navigating the webview. The context bars, transcript, cards, permissions, and composer reflow for a narrow sidebar and use a centered reading width in a wide editor panel. The composer grows with your message, and ↑ recalls what you sent before.

Codify commands in the chat

A Codify toolbar sits above the transcript: brief, next, status, review, check, guard, changes, and remember are one click each, and once a task is attached, implemented, done, and handoff appear beside them. done runs the real cg spec done qualification; its output card is marked green or red and a refusal is left open and handed to the agent to fix. Type / for the command palette. Each one runs the real cg verb in the workspace, shows the output as a collapsible card, and hands the same output to the agent as context with a short instruction — so the agent works from the graph rather than from a guess.

Command Runs
/brief cg brief — session state: task, changes, decisions
/next cg spec next — the next eligible task
/status cg spec status — the board for the active feature
/task [id] Claim, start, and attach a task, then brief the agent with its resume packet
/context <query> cg context — symbols, snippets and edges in one call
/search <query> cg search — find code by name across the graph
/impact <name> cg impact — callers and callees
/why <name> cg why — commits, tasks, decisions behind a symbol
/changes cg changes — impact radius of the uncommitted edits
/review cg review — changed symbols vs the task's acceptance criteria
/tests [symbol] cg test-impact — the tests that exercise it
/check cg check — the gate: render, lint, evidence, tree
/guard cg guard — the uncommitted edits against the attached task's declared scope
/implemented cg spec implemented — mark the attached task coded, qualification pending
/done cg spec done — qualify the attached task: verify_cmd and graph checks must pass
/remember <text> cg remember — save a decision to project memory
/handoff cg handoff — record where you stopped on the attached task
/open <path> Open a file in the editor
/new, /help Fresh chat; the palette itself

/brief, /next, /review, /check and /task are also one-click chips on the empty chat.

Working tasks in the view

The board drives the same chat. Start Agent Session on Task (task node or palette) runs the whole pickup into the Agent view:

  1. In parallel mode the task is claimed first (cg spec claim <id> --agent vscode-acp-<n>), then started. A claim someone else holds is refused, not stolen.
  2. A resume packet is generated with cg resume --task <id> --prompt (degrading to the session brief on an older cg) and sent as the opening prompt.
  3. The view's header shows the task id, title, and live board status while the agent works it.

If the view already has a chat going, you choose: replace it (with the usual handoff/release offer for an attached task) or open beside — an editor panel running a second concurrent session. When any session ends with its task not yet qualified, the extension offers to record a handoff or release the claim — the same discipline as the terminal path.

If the adapter is missing or fails to start (auth methods, when the agent reports them, are named in the error), any claim is released and the extension offers the terminal session as the fallback. Set codify.agent.interface: "terminal" to route task starts to a seeded terminal (codify: <driver> <id>) instead of the view.

The rest of the lifecycle:

Command What it does
Run Agent Headless on Task Same claim + prompt, but runs codex exec --sandbox workspace-write (or claude -p) as a VS Code task; the exit is reported with the task's resulting status
Hand Off Task Records what is done, what is next, and what is blocked (cg handoff) so a fresh session can pick up cleanly
Resume Task in Agent Session Quick-picks an in-progress task and opens a new driver terminal seeded from cg resume --prompt — the fresh-session half of a handoff
Run Wave with Agents Opens a terminal running cg spec run -n <codify.agent.parallelism> --driver <driver> — the built-in orchestrator works the whole eligible frontier
Stop Agent Session Closes the session's terminal (or terminates the headless task)

When a session's terminal closes — or a headless run exits — with the task not yet done or implemented, the extension offers to release the claim so the task returns to the frontier. While any tracked session exists, the board refreshes on a 3-second poll in addition to watching .codegraph/graph.db, so work done by agents outside the editor shows up without a manual refresh. Tasks with a live claim show $(person) plus the agent name; $(terminal) marks tasks with a tracked terminal session and $(comment-discussion) marks tasks with a live agent panel in this window.

The rest of the workflow

Click the status bar item, or run Codify: Actions…, for one menu covering the whole loop:

Command What it does
Session Brief Project state, the active task and its criteria, uncommitted paths, recent decisions — the thing to run first
Review the Change Changed symbols, the callers now at risk, and the acceptance criteria the change claims to satisfy
Tests Touching This Change Which tests exercise the symbol under the cursor, or everything you have changed
Why Does This Exist? Provenance for the symbol under the cursor: commits, the tasks they implemented, the decisions behind them
Check the Repository The full gate — render staleness, spec lint, task evidence, claim consistency
Check Edit Scope What cg guard sees right now
New Feature Spec / Add Task Create a plan without leaving the editor
Lint Spec Requires cycles, unknown ids, missing criteria, dead globs
Snapshot the Working Tree cg commit, auto-tagged with the in-progress task
Install Hooks Wire the agent and git hooks so the graph stays fresh on its own

Reports open as rendered markdown previews rather than console dumps.

A second status bar item appears only when edits have drifted outside the current task's scope, listing the files. It is advisory; clicking it shows the detail.

kvx editing

Beyond syntax highlighting:

  • Go to definition on a requires entry jumps to that task; on a reqs entry, to the requirement it satisfies; on a concrete touches path, to the file.
  • Completion offers the keys a task section actually understands — with what each one does — and real task ids when completing requires.
  • Hover on any key explains what the spec engine does with it.
  • Outline lists every requirement, design section and task, with titles.

Requirements

  • cg on PATH, or set codify.binaryPath.
  • npx for the default Codex ACP launcher, or set codify.acp.codexCommand to an installed ACP adapter.
  • For the task board: a workspace containing spec/workflow.kvx.
  • For code navigation: a workspace with .codegraph/ — run cg init.

Neither is required for the other. kvx highlighting works everywhere.

Settings

Setting Default Description
codify.binaryPath cg Path to the cg binary
codify.feature (empty) Feature override, passed to every spec command as -f
codify.languageServer true Run cg lsp for navigation, hover, code lens and diagnostics
codify.agentName (empty) Default name used when claiming a task in parallel mode
codify.agent.driver codex Which provider drives sessions: codex, claude, or custom (the Agent view's picker sets it for the next chat)
codify.agent.interface panel How a session opens: the ACP agent panel or a seeded terminal
codify.acp.claudeCommand claude-code-acp Command that starts the Claude Code ACP adapter (quote-aware)
codify.acp.codexCommand npx -y @agentclientprotocol/codex-acp@1.7.0 Command that starts the Codex ACP adapter (quote-aware). The former npx … @zed-industries/codex-acp value is compatibility-redirected because its embedded Codex lacks current model metadata.
codify.acp.customCommand (empty) Any ACP-speaking agent command, offered as the Custom provider; used by default when set and no provider was picked
codify.agent.codexPath codex Path to the Codex CLI (terminal sessions)
codify.agent.claudePath claude Path to the Claude Code CLI
codify.agent.codexArgs (empty) Extra arguments passed to codex when starting a session
codify.agent.claudeArgs (empty) Extra arguments passed to claude when starting a session
codify.agent.parallelism 2 Agent slots used by Run Wave with Agents (cg spec run -n)

Install

No build step and no dependencies — the extension is plain JavaScript, including its Language Server client. vsce package needs no npm install.

cd editors/vscode
npx @vscode/vsce package        # produces codify-1.2.0.vsix
code --install-extension codify-1.2.0.vsix --force

The Marketplace identity is SidioraLabs.codify. In a Remote SSH, WSL, or container window, install the VSIX on the remote extension host, not only the local UI side. The Agent header shows the running version (for example v1.2.0), so a stale host is immediately visible after reload.

For development, open editors/vscode/ in VS Code and press F5.

Note on other kvx extensions

If another extension also claims the .kvx extension (for example a grammar for a different kvx dialect), VS Code lets the last-installed one win. This grammar targets the Ion spec dialect that Codify parses: [section] headers, key = "value", lists, and quote-toggled comments.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft