ACLine for VS Code
Browse and act on an acline store from the editor: tasks and their completion gate, specs, plans, decisions, memory, dependencies, the roadmap and the audit trail. The extension is a client of acline mcp serve. Every rule (who may approve, what the gate requires) is enforced by acline's store, not by the extension.
Setup
- Install the
acline binary (curl -fsSL https://acline.nizaami.com/install.sh | bash, or go install from cli-acline) and check that acline version works in a terminal.
- Install the extension from the VS Code Marketplace (search "ACLine AI" in the Extensions view), or build a
.vsix from source with npm run install-ext (packages and installs into VS Code) or npm run package (just the .vsix).
- Open a folder inside a project acline tracks (
acline init registers one). Views scope themselves to the registered project whose path contains the open folder.
- Run ACLine: Run Doctor (or
acline doctor in a terminal) if anything looks off, and ACLine: Set Up Approval Token to enable the token.
The Get started with ACLine walkthrough (Help → Welcome → Walkthroughs) goes through the same steps.
If VS Code can't find acline (a GUI-launched VS Code often lacks your shell's PATH), set acline.binaryPath. The extension also tries the usual install locations (~/go/bin, ~/.local/bin, /opt/homebrew/bin, /usr/local/bin) and says when it used one.
What you get
- Views in the ACLine activity bar: Tasks (with criteria, checks and gate), Memory, Decisions, Specs, Plans, Audit Trail, Dependencies, Roadmap.
- ACLine: Show Dashboard: active session, urgent and high-risk work, pending reviews.
- Status bar: the active role and session, and a count of what needs your attention.
- Live views: when the CLI, an agent or another window changes the store, the server says so and the views refresh (once per burst of writes; an unfocused window catches up when you return to it).
- Commands for the daily loop: add tasks and criteria, run checks (
acline check run in the task's project), change a task's status, risk, autonomy or priority, approve or reject, start and end sessions, review memory, accept decisions, approve plans. Right-click an item for its actions, or search the Command Palette for "ACLine".
Identity and the approval token
The extension starts acline mcp serve as you: it sets ACLINE_ACTOR_TYPE=human unless the window already has an identity. A VS Code launched from an agent's shell keeps that agent identity, and the server refuses to let an agent environment act as a person.
Until you run acline auth init in a terminal, identity is self-declared, and anything that claims to be a person can approve work. With a token enabled, the extension asks for it (in a password box, never stored) whenever an action needs a person: approving a task, overriding a gate, lowering risk or loosening autonomy, approving memory, accepting or retiring a decision, deciding a plan, or ending a policy-restricted session. Deciding specs, decisions and plans from the editor requires a token; without one the extension points you at the CLI command instead.
Workspace trust
In an untrusted workspace the extension still works, but it ignores acline.binaryPath, acline.dbPath, acline.env and acline.roleFilter. So a repository's .vscode/settings.json can't make VS Code run a program of its choosing, point it at another store, or record your approvals under a role it picked. When a role is set, approving a task first asks you to confirm the role.
Settings
| Setting |
Default |
What it does |
acline.binaryPath |
acline |
The binary to run. Ignored in untrusted workspaces. |
acline.dbPath |
(empty) |
--db for the server. Empty means acline's own default ($ACLINE_DB or ~/.acline/store.db). Ignored in untrusted workspaces. |
acline.env |
{} |
Extra environment for the server, for variables that exist only in your shell profile (e.g. ACLINE_DB, VOYAGE_API_KEY). Ignored in untrusted workspaces. |
acline.projectFilter |
(empty) |
Scope every view to this project. Empty follows the workspace; * means no scope. |
acline.roleFilter |
(empty) |
The role recorded on checks, notes, log entries and approvals from this window (ACLine: Select Role). Ignored in untrusted workspaces. |
acline.mode |
full |
reviewer hides the capture and edit commands (adding tasks, notes, criteria, links, sessions, …) and keeps what a reviewer does: approve or reject, the gate, completing a task, risk/autonomy, decisions, specs, plans, memory review, check runs, the dashboard. |
acline.autoRefreshInterval |
0 |
Seconds between timed refreshes; 0 is off, and anything else is at least 5. Rarely needed, since views already refresh when the store changes; useful with an older acline that can't push changes. |
Versions
The extension and the server agree on one number, the tool-contract version (acline_server_info's protocol_version). When they differ, the extension says which side to update. The server's output appears in the ACLine output channel.
Development
From the repo root: make ext-build (regenerates the TypeScript types from the Go MCP structs, then compiles), make ext-test (unit tests), make ext-package. The types in src/generated.ts are generated; don't edit them by hand.
| |