@globant/coda-darwin-x64 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/coda-help.md +6 -5
- package/assets/autonomy/continuation.md +89 -0
- package/assets/autonomy/judge-guidance.md +48 -0
- package/assets/autonomy/judge.md +59 -0
- package/assets/autonomy/maintenance.md +19 -0
- package/assets/autonomy/objective-updated.md +15 -0
- package/assets/autonomy/reminder.md +23 -0
- package/assets/autonomy/wrap-up.md +24 -0
- package/assets/docs/add-mcp-server-skill.md +135 -0
- package/assets/docs/agents.md +1 -1
- package/assets/docs/cli-reference.md +2 -0
- package/assets/docs/config-json.md +42 -45
- package/assets/docs/config-reference.md +50 -36
- package/assets/docs/configuration.md +12 -9
- package/assets/docs/connect-provider.md +3 -3
- package/assets/docs/extensions.md +23 -26
- package/assets/docs/faq.md +17 -7
- package/assets/docs/glossary.md +4 -4
- package/assets/docs/guide-changes.md +4 -4
- package/assets/docs/guide-collaborate.md +4 -4
- package/assets/docs/guide-extend.md +5 -5
- package/assets/docs/hooks.md +32 -68
- package/assets/docs/how-it-works.md +3 -3
- package/assets/docs/index.md +6 -5
- package/assets/docs/installation.md +5 -5
- package/assets/docs/logging.md +1 -1
- package/assets/docs/overview.md +7 -6
- package/assets/docs/permissions.md +16 -12
- package/assets/docs/quickstart.md +8 -4
- package/assets/docs/sessions.md +1 -1
- package/assets/docs/shortcuts.md +1 -1
- package/assets/docs/tools-reference.md +8 -1
- package/assets/docs/workflows.md +2 -1
- package/assets/skills/configure-mcp/SKILL.md +279 -0
- package/assets/skills/create-hook/SKILL.md +4 -4
- package/assets/skills/init-rules/SKILL.md +191 -0
- package/coda +0 -0
- package/lib/keytar/build/Release/keytar.node +0 -0
- package/lib/opentui/libopentui.dylib +0 -0
- package/lib/ripgrep/rg +0 -0
- package/package.json +1 -1
package/assets/docs/faq.md
CHANGED
|
@@ -61,11 +61,11 @@ Use `coda --lastsession` to resume the most recent session. For a specific sessi
|
|
|
61
61
|
|
|
62
62
|
### What does the context percentage in the status bar mean?
|
|
63
63
|
|
|
64
|
-
It shows how full the current conversation context is.
|
|
64
|
+
It shows how full the current conversation context is. CODA starts automatic reduction before the window is exhausted: stale tool output can move aside first, and older history is summarized at the configured threshold. If quality feels degraded, run `/compact` manually or start a `/new` session.
|
|
65
65
|
|
|
66
66
|
### CODA seems to have "forgotten" something from earlier in the session. Why?
|
|
67
67
|
|
|
68
|
-
Automatic
|
|
68
|
+
Automatic reduction may move stale tool output out of the active context and condense older messages into a summary. The original transcript remains stored, but the model works from the reduced view. If you need a less aggressive model-visible context while debugging, open `/settings` → **Context Compaction** to disable automatic reduction or adjust the threshold.
|
|
69
69
|
|
|
70
70
|
## Making changes
|
|
71
71
|
|
|
@@ -77,7 +77,7 @@ Type `/timeline` (or `/rewind`, or press **Esc** twice) to see all snapshots fro
|
|
|
77
77
|
|
|
78
78
|
CODA runs an **authorization engine** that decides `allow` / `ask` / `deny` for every tool call. Two levers control it:
|
|
79
79
|
|
|
80
|
-
- **Permission mode** — press `Ctrl+P` to cycle the session's mode: **read-only** (only reads run; writes and commands are refused), **default** (reads run, risky actions like `git commit` ask first, destructive ones are denied unless you add an allow rule), and **auto** (risky actions auto-run for unattended/CI use; only catastrophic ones stay blocked). Set
|
|
80
|
+
- **Permission mode** — press `Ctrl+P` to cycle the session's mode: **read-only** (only reads run; writes and commands are refused), **default** (reads run, risky actions like `git commit` ask first, destructive ones are denied unless you add an allow rule), and **auto** (risky actions auto-run for unattended/CI use; only catastrophic ones stay blocked). Set your default in `~/.coda/config.json` via `permissions.defaultMode`; a project config can tighten but cannot raise it.
|
|
81
81
|
- **Rules** — to always allow or always block a specific command, add `allow` / `ask` / `deny` rules under `permissions` in `config.json` (e.g. `allow Bash(git status)` or `deny Bash(rm:*)`). **Deny always wins**, and a handful of catastrophic actions (`rm -rf /`, `sudo`, a fork bomb) sit behind an un-relaxable floor that no allow rule can override.
|
|
82
82
|
|
|
83
83
|
The legacy `bash.autoApproveLevel` ("safe"→"high") was replaced by this model; a stored `high` migrates to `auto`.
|
|
@@ -100,7 +100,7 @@ Some editors capture `Ctrl+P` before CODA sees it. On **Windows/Linux**, VS Code
|
|
|
100
100
|
|
|
101
101
|
### What is AGENTS.md and should I have one?
|
|
102
102
|
|
|
103
|
-
It's optional, but recommended — especially for shared projects.
|
|
103
|
+
It's optional, but recommended — especially for shared projects. Put `AGENTS.md` in the directory where you launch CODA to document coding conventions, test commands, and files not to touch. CODA also accepts `AGENT.md` or `CLAUDE.md` as fallback names. Generate `AGENTS.md` with `/init` (or write it by hand), customize it, and commit it so the whole team benefits.
|
|
104
104
|
|
|
105
105
|
## Extensions and tools
|
|
106
106
|
|
|
@@ -130,7 +130,7 @@ Open `/workflows` and press **`c`** on a running entry, or run `/workflows stop
|
|
|
130
130
|
|
|
131
131
|
### How do I install a plugin or browse the marketplace?
|
|
132
132
|
|
|
133
|
-
From inside CODA, open the `/plugin` manager to install, enable, disable, and browse the marketplace. From your terminal, `coda plugin install <source>` works too, where `<source>` is an npm package (prefix `npm:`), a Git/HTTPS URL, a local directory path, a `.zip` archive, or a `file://…` URL. CODA
|
|
133
|
+
From inside CODA, open the `/plugin` manager to install, enable, disable, and browse the marketplace. From your terminal, `coda plugin install <source>` works too, where `<source>` is an npm package (prefix `npm:`), a Git/HTTPS URL, a local directory path, a `.zip` archive, or a `file://…` URL. CODA recognizes native CODA plugins plus Claude Code, Cursor, and portable Agent Plugins layouts. To browse a marketplace catalog, first register one with `coda marketplace install <source>`; then `/plugin` lists available plugins from that catalog. See [Extend CODA](#guide-extend).
|
|
134
134
|
|
|
135
135
|
## Models and cost
|
|
136
136
|
|
|
@@ -147,6 +147,16 @@ CODA re-checks your configured model against the provider's live catalog at star
|
|
|
147
147
|
|
|
148
148
|
To opt out and always be asked, set `"strictPin": true` on the profile (see [Configuration Reference](#config-reference) › "activeProfile and profiles" and "modelResilience"). On a provider without a live catalog (e.g. local Ollama), CODA trusts your id and shows a clear switch-model message if it turns out to be unavailable.
|
|
149
149
|
|
|
150
|
+
### How do I set the reasoning (thinking) effort for a single headless run?
|
|
151
|
+
|
|
152
|
+
Pass `coda --reasoning-effort <level>` (`none|minimal|low|medium|high|xhigh|max`, case-insensitive) alongside your headless prompt:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
coda -p "explain this repo" --reasoning-effort high
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The level is applied **in memory for that run only** — it is never written to `~/.coda/config.json`, and it overrides any persisted `reasoning.effort` just for that invocation. Because nothing is written to disk, you can launch several headless runs **concurrently with different efforts** and they won't race on a shared config file (the reason the flag exists). Subagents spawned during the run inherit the same effort. An invalid value fails fast; a level the active model can't honor prints a stderr warning and runs without applying it (no silent fallback). Interactively, use `/effort` instead. See [Configuration Reference](#config-reference) for the persisted reasoning settings and supported levels.
|
|
159
|
+
|
|
150
160
|
### Where do I see token usage and cost?
|
|
151
161
|
|
|
152
162
|
The TUI status bar shows the context fill percentage and running token/cost figures for the session, so you can keep an eye on how much a long session is consuming.
|
|
@@ -159,7 +169,7 @@ Everything lives under `~/.coda/` — `config.json`, `.secrets`, the session dat
|
|
|
159
169
|
|
|
160
170
|
### How do I view or share logs safely?
|
|
161
171
|
|
|
162
|
-
Run `coda logs` for the viewer (filter by `--level`, `--service`, `--since`, or `--follow`). To share with support, `coda logs export` writes a redacted, path-scrubbed bundle to `~/.coda/exports/` — nothing is ever uploaded. Secrets are scrubbed before anything hits disk. See [View & Share Logs](#logging).
|
|
172
|
+
Run `coda logs` for the viewer (filter by `--level`, `--service`, `--since`, or `--follow`). To share with support, `coda logs export` writes a redacted, path-scrubbed bundle to `~/.coda/exports/` — nothing is ever uploaded. Review it, then attach it to your request or email **coda-tech-support@globant.com**. Secrets are scrubbed before anything hits disk. See [View & Share Logs](#logging).
|
|
163
173
|
|
|
164
174
|
### Can I use checkpoints in CI?
|
|
165
175
|
|
|
@@ -167,7 +177,7 @@ Not for rollback — the `/timeline` picker is a TUI feature. In headless mode c
|
|
|
167
177
|
|
|
168
178
|
### How does CODA behave in a monorepo?
|
|
169
179
|
|
|
170
|
-
|
|
180
|
+
At startup, CODA loads an optional global instruction file plus one instruction file from the directory where you launch it (`AGENTS.md`, then `AGENT.md`, then `CLAUDE.md`). It does not inherit parent-directory instructions at startup. When it reads files deeper in the tree, it can attach more-specific instructions from those subdirectories. Launch from the package you're working in (`cd packages/billing && coda`) when that package's rules should be the root conventions. See [Collaborate with Your Team](#guide-collaborate).
|
|
171
181
|
|
|
172
182
|
## See also
|
|
173
183
|
|
package/assets/docs/glossary.md
CHANGED
|
@@ -4,18 +4,18 @@ Quick definitions for terms used throughout the docs.
|
|
|
4
4
|
|
|
5
5
|
| Term | Definition |
|
|
6
6
|
| --- | --- |
|
|
7
|
-
| **AGENTS.md** |
|
|
7
|
+
| **AGENTS.md** | The preferred instruction filename for project conventions, quality gates, and constraints. CODA loads it from the launch directory at startup and can attach more-specific instruction files when reading deeper paths. `AGENT.md` and `CLAUDE.md` are fallback names. |
|
|
8
8
|
| **Agent** | In CODA, an agent is a Markdown-defined profile that describes a specialist persona. CODA can delegate subtasks to agents, running them in parallel for complex work. |
|
|
9
9
|
| **Batch mode** | Headless, non-interactive mode. Run with `coda -p "prompt"`. No TUI, no multi-turn conversation — use in scripts and CI. |
|
|
10
10
|
| **Checkpoint** | A file snapshot taken before each turn — the state from before CODA acts on the message you just sent. Restored via `/timeline` or `/rewind`; your project's Git history is untouched. |
|
|
11
11
|
| **CLI** | The `coda` command-line tool. It runs in two modes: interactive (the TUI) and headless (batch). |
|
|
12
12
|
| **coda-help** | A built-in agent that answers questions about how to use CODA by searching the local user guide. CODA delegates to it automatically when you ask about itself. |
|
|
13
|
-
| **Compaction** |
|
|
13
|
+
| **Compaction** | Context reduction for long sessions. CODA either stores the current context directly or reduces it by moving stale tool output aside and, at the configured threshold, condensing older messages into a summary. |
|
|
14
14
|
| **Extension** | A TypeScript module that registers custom tools, slash commands, or lifecycle hooks into CODA. |
|
|
15
15
|
| **Glob.AI OS** | Globant's internal AI gateway — the primary provider for CODA at Globant. |
|
|
16
16
|
| **MCP** | Model Context Protocol. A standard for connecting AI models to external tools and services. CODA uses MCP servers to talk to GitHub, databases, CI systems, and other integrations. |
|
|
17
17
|
| **MEMORY.md** | Durable notes the agent keeps across sessions — preferences, decisions, and gotchas it learns. Unlike AGENTS.md (which you write), CODA maintains this itself, and it survives checkpoint rollbacks. |
|
|
18
|
-
| **Plugin** | A versioned, installable package that can bundle skills, agents, extensions, and
|
|
18
|
+
| **Plugin** | A versioned, installable package that can bundle skills, agents, extensions, MCP fragments, and lifecycle hooks. More structured than an extension; installable via `coda plugin install`. |
|
|
19
19
|
| **Provider** | The AI backend CODA sends prompts to — for example a Glob.AI OS instance, a local Ollama server, or any OpenAI-compatible endpoint. Managed with `/providers`. |
|
|
20
20
|
| **Session** | A persistent CODA conversation. Stored on disk; resumable at any time. |
|
|
21
21
|
| **Skill** | A Markdown file that encodes a repeatable workflow. Invoked with a slash command like `/skill-name`. |
|
|
@@ -37,7 +37,7 @@ Quick definitions for terms used throughout the docs.
|
|
|
37
37
|
| **`propose_policy`** | The built-in tool CODA uses to suggest a permanent permission change (add rule, remove rule, or change mode) for you to approve. Triggered when you ask in plain English (e.g. "allow pnpm build") or after a denial. On by default; a *widening* change always needs your explicit approval. Disable with `permissions.proposePolicy: false`, `CODA_PROPOSE_POLICY`, or the admin `disableProposePolicy`. |
|
|
38
38
|
| **Managed policy** | An organization-level policy set by an administrator that overrides and locks certain permission settings in your personal and project configs (e.g. forbidding `auto` mode, restricting MCP servers). A managed `deny` is final. |
|
|
39
39
|
| **Headless mode** | See *Batch mode*. |
|
|
40
|
-
| **Marketplace** |
|
|
40
|
+
| **Marketplace** | A catalog of installable plugins, reachable from the `/plugin` manager. CODA recognizes native, Claude Code, Cursor, and portable Agent Plugins layouts. |
|
|
41
41
|
| **Redaction** | The always-on scrubbing of secret-looking keys and values from logs before they're written to disk. |
|
|
42
42
|
| **ripgrep / fastgrep** | The two content-search backends behind the `grep` tool. ripgrep ships bundled and is the default. |
|
|
43
43
|
| **Shadow repository** | The private Git repo where checkpoints are stored, separate from your project's own `.git`. Located at `~/.coda/checkpoints/<hash>/` by default (one per project, keyed by a SHA-256 of the project path). The base directory can be relocated via `CODA_HOME`. |
|
|
@@ -10,11 +10,11 @@ In addition to per-turn snapshots, CODA automatically takes an extra snapshot la
|
|
|
10
10
|
|
|
11
11
|
For how checkpoints work in detail — the shadow repo, Git requirements, and how restoring rewinds the conversation — see [Sessions & Checkpoints](#sessions).
|
|
12
12
|
|
|
13
|
-
## Approve
|
|
13
|
+
## Approve actions when CODA asks
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Every tool call goes through the authorization engine. It combines your **permission mode** with `allow` / `ask` / `deny` rules and the built-in safety floor. An `allow` decision runs immediately, `deny` does not run, and `ask` opens the approval prompt — press **Y** for this action, **A** for the displayed reusable session rule when offered, or **N** to deny it. Use **Arrow keys + Enter** to select another offered option; a permanent project rule always gets a second confirmation.
|
|
16
16
|
|
|
17
|
-
How much runs without asking depends on your
|
|
17
|
+
How much runs without asking depends on your permission mode, which you cycle with **Ctrl+P** or set via `permissions.defaultMode`:
|
|
18
18
|
|
|
19
19
|
| Mode | What it allows |
|
|
20
20
|
| --- | --- |
|
|
@@ -88,7 +88,7 @@ If your project has an `AGENTS.md` with a "quality gate" section, CODA follows i
|
|
|
88
88
|
## A quick mental model for staying in control
|
|
89
89
|
|
|
90
90
|
1. **Checkpoint** — every turn is snapshotted before it runs, so you can always go back.
|
|
91
|
-
2. **
|
|
91
|
+
2. **Authorize** — rules and the current mode decide each tool call; only `ask` decisions pause for you.
|
|
92
92
|
3. **Interrupt** — **Esc** stops a turn the instant it heads the wrong way.
|
|
93
93
|
4. **Steer or queue** — react without stopping the turn (`/settings` → **Composer**).
|
|
94
94
|
5. **Undo** — `/timeline` (or **Esc Esc**) rewinds files *and* the conversation to a chosen point.
|
|
@@ -6,7 +6,7 @@ CODA works best when the whole team uses it consistently. This guide covers how
|
|
|
6
6
|
|
|
7
7
|
`AGENTS.md` is the most important file for team collaboration. CODA reads it at the start of every session and uses it to understand your project's conventions — coding style, testing approach, which areas to avoid, how to run the quality checks.
|
|
8
8
|
|
|
9
|
-
CODA looks for
|
|
9
|
+
CODA looks for an instruction file in the directory where you launch it, preferring `AGENTS.md`, then `AGENT.md`, then `CLAUDE.md`. Put project instructions at that root for visibility. A legacy `<project>/.coda/AGENTS.md` is no longer loaded; move it to the project root.
|
|
10
10
|
|
|
11
11
|
Create or update it with `/init` and then edit it to add what CODA missed. A typical `AGENTS.md` looks like this:
|
|
12
12
|
|
|
@@ -64,13 +64,13 @@ The most valuable things to share live in the repo and apply to everyone who clo
|
|
|
64
64
|
A project-level `<project>/.coda/config.json` is also **safe to commit** — it never holds secrets (those live in `~/.coda/.secrets`, which is never committed). But be selective about what you put there:
|
|
65
65
|
|
|
66
66
|
- **Don't commit the active provider.** Which provider you use (a specific Glob.AI OS instance, or a local Ollama) is a personal, machine-specific choice, and provider profiles are defined in each developer's own global config. Pinning it in the repo can break teammates who don't have that profile.
|
|
67
|
-
- **
|
|
67
|
+
- **Use project permission modes to tighten, not widen.** A project `.coda/config.json` can start sessions in a more restrictive mode, but CODA ignores attempts to raise autonomy above each developer's user-level default. Share explicit rules only when the team agrees on them.
|
|
68
68
|
|
|
69
69
|
In short: share **conventions and workflows**, keep **personal and security preferences** local.
|
|
70
70
|
|
|
71
71
|
## Working in a monorepo
|
|
72
72
|
|
|
73
|
-
CODA loads
|
|
73
|
+
At startup, CODA loads your optional global instruction file from `~/.coda/` and one instruction file from the directory where you launch it, using the `AGENTS.md` → `AGENT.md` → `CLAUDE.md` fallback order. It does not merge instruction files from parent directories at startup. When CODA later reads a file below that root, it can attach more-specific instruction files found between that file and the launch directory. Agent definitions and workflow modules use their own upward discovery rules.
|
|
74
74
|
|
|
75
75
|
In a monorepo, launch CODA from the package directory you're working in:
|
|
76
76
|
|
|
@@ -79,7 +79,7 @@ cd packages/billing
|
|
|
79
79
|
coda # loads packages/billing/AGENTS.md
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
Put conventions
|
|
82
|
+
Put package-specific conventions in each package's `AGENTS.md`. For repository-wide conventions, launch from the repository root or make the shared rules available from the package launch directory; CODA does not automatically inherit a parent root file at startup.
|
|
83
83
|
|
|
84
84
|
## Share agents and workflows too
|
|
85
85
|
|
|
@@ -27,9 +27,9 @@ Everything happens from inside CODA through the `/mcp` manager:
|
|
|
27
27
|
/mcp
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
From there you can **add a server** (paste its JSON or import it from a file), edit the global or project `mcp.json`, list configured servers and their connection status, view the tools each one exposes, enable or disable servers for the session, and reload after a change — no need to hand-edit files outside the app.
|
|
30
|
+
From there you can **add a server** (paste its JSON or import it from a file), edit the global or project `mcp.json`, list configured servers and their connection status, view the tools each one exposes, enable or disable servers for the session, and reload after a change — no need to hand-edit files outside the app. You can also ask CODA to configure one from a package, command, repository, or URL; see [Configure an MCP Server](#add-mcp-server-skill).
|
|
31
31
|
|
|
32
|
-
**Where MCP servers are defined.** Servers live in `mcp.json` files that layer like the rest of your config: `~/.coda/mcp.json` (global) and `<project>/.coda/mcp.json` (project). A third, session-level file at `~/.coda/sessions/<sessionId>/mcp.json` holds per-session overrides — including a disable-only shorthand `{ "disabled": true }` to switch a higher-tier server off for one session. Each server entry is either **stdio** (`command` plus optional `args`/`env`) or **HTTP** (`url`, optional `headers`/token)
|
|
32
|
+
**Where MCP servers are defined.** Servers live in `mcp.json` files that layer like the rest of your config: `~/.coda/mcp.json` (global) and `<project>/.coda/mcp.json` (project). A third, session-level file at `~/.coda/sessions/<sessionId>/mcp.json` holds per-session overrides — including a disable-only shorthand `{ "disabled": true }` to switch a higher-tier server off for one session. Each project/global server entry is either **stdio** (`command` plus optional `args`/`env`) or **HTTP** (`url`, optional `headers`/token). Use the `/mcp` manager to enable or disable it for the current session. CODA builds the live server map from `mcp.json` + plugins + `--mcp-config`, so prefer `mcp.json` over the `mcp.servers` block in `config.json`.
|
|
33
33
|
|
|
34
34
|
Once a server is connected, CODA can use its tools automatically — you just describe what you want in plain language. For example, with a **GitHub MCP server** connected, you could ask:
|
|
35
35
|
|
|
@@ -88,7 +88,7 @@ Ready to build one? The easiest way is to ask CODA — its `create-extension` sk
|
|
|
88
88
|
|
|
89
89
|
## Share packaged integrations with plugins
|
|
90
90
|
|
|
91
|
-
Plugins are versioned, installable packages — like extensions, but with a manifest, version number, and the ability to bundle skills, agents,
|
|
91
|
+
Plugins are versioned, installable packages — like extensions, but with a manifest, version number, and the ability to bundle skills, agents, extensions, MCP fragments, and lifecycle hooks together. Use plugins when you want to share a reusable CODA integration across teams or projects.
|
|
92
92
|
|
|
93
93
|
Manage plugins from inside CODA with the `/plugin` manager — enable, disable, and browse any registered marketplace catalog. The `/plugin install` slash command accepts **only absolute local paths** to a plugin directory; for npm packages, Git URLs, or marketplace-sourced plugins, use `coda plugin install <source>` from the terminal:
|
|
94
94
|
|
|
@@ -102,7 +102,7 @@ You can also install from your terminal:
|
|
|
102
102
|
coda plugin install <source> [--name <folder>] [--scope global|project]
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
`<source>` can be an npm package (prefix `npm:`), a Git/HTTPS URL, a local directory path, a `.zip` archive, or a `file://…` URL. `--name` selects a subdirectory (useful for monorepo git sources); `--scope` chooses `global` (default) or `project` install scope.
|
|
105
|
+
`<source>` can be an npm package (prefix `npm:`), a Git/HTTPS URL, a local directory path, a `.zip` archive, or a `file://…` URL. `--name` selects a subdirectory (useful for monorepo git sources); `--scope` chooses `global` (default) or `project` install scope. After installing, enabling, or disabling a plugin, run `/reload-plugins`. It starts a fresh session with plugins reloaded.
|
|
106
106
|
|
|
107
107
|
### Adding a marketplace
|
|
108
108
|
|
|
@@ -113,7 +113,7 @@ A marketplace is a catalog of plugins. Add one from the terminal with `coda mark
|
|
|
113
113
|
- a **local folder** containing a `marketplace.json` (Claude-style `.claude-plugin/` or `.coda-plugin/` layouts are recognized);
|
|
114
114
|
- a **local `.zip`** archive — CODA unpacks it and finds the catalog inside, including the single nested top-level folder you get from a GitHub "Download ZIP" / "Source code" archive.
|
|
115
115
|
|
|
116
|
-
CODA
|
|
116
|
+
CODA recognizes native CODA plugins plus Claude Code, Cursor, and portable Agent Plugins layouts. Features outside CODA's supported component set may be ignored, so review the detected plugin details before enabling it.
|
|
117
117
|
|
|
118
118
|
## Orchestrate multiple agents with workflows
|
|
119
119
|
|
package/assets/docs/hooks.md
CHANGED
|
@@ -10,7 +10,7 @@ The hook system is **compatible with Claude Code hooks**: the same JSON input/ou
|
|
|
10
10
|
|
|
11
11
|
Add a `hooks` key to `~/.coda/config.json` (global) or `.coda/config.json` (project):
|
|
12
12
|
|
|
13
|
-
```
|
|
13
|
+
```json
|
|
14
14
|
{
|
|
15
15
|
"hooks": {
|
|
16
16
|
"PreToolUse": [
|
|
@@ -186,15 +186,18 @@ The `matcher` field filters which tool names (or session sources) trigger the ho
|
|
|
186
186
|
|
|
187
187
|
Coda sends a JSON object on **stdin** (command hooks) or as the **POST body** (HTTP hooks). All events include these base fields:
|
|
188
188
|
|
|
189
|
-
```
|
|
189
|
+
```json
|
|
190
190
|
{
|
|
191
191
|
"session_id": "abc123",
|
|
192
192
|
"transcript_path": "",
|
|
193
193
|
"cwd": "/home/user/my-project",
|
|
194
|
-
"hook_event_name": "PreToolUse"
|
|
194
|
+
"hook_event_name": "PreToolUse",
|
|
195
|
+
"cli_version": "0.4.2"
|
|
195
196
|
}
|
|
196
197
|
```
|
|
197
198
|
|
|
199
|
+
`cli_version` is the running Coda version — the value `coda --version` prints — so a hook can attribute what it observes to the exact version that produced it. Command hooks also receive it as the `CODA_VERSION` environment variable (see [Environment variables available to hooks](#environment-variables-available-to-hooks)), which is cheaper than parsing stdin in hot-path hooks.
|
|
200
|
+
|
|
198
201
|
### Tool events (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`)
|
|
199
202
|
|
|
200
203
|
```jsonc
|
|
@@ -203,7 +206,8 @@ Coda sends a JSON object on **stdin** (command hooks) or as the **POST body** (H
|
|
|
203
206
|
"transcript_path": "",
|
|
204
207
|
"cwd": "/home/user/my-project",
|
|
205
208
|
"hook_event_name": "PreToolUse",
|
|
206
|
-
"
|
|
209
|
+
"cli_version": "0.4.2",
|
|
210
|
+
"tool_name": "bash",
|
|
207
211
|
"tool_input": { "command": "git status", "description": "Check git status" },
|
|
208
212
|
"tool_use_id": "toolu_01XYZ",
|
|
209
213
|
// PostToolUse only:
|
|
@@ -215,36 +219,39 @@ Coda sends a JSON object on **stdin** (command hooks) or as the **POST body** (H
|
|
|
215
219
|
|
|
216
220
|
### `UserPromptSubmit`
|
|
217
221
|
|
|
218
|
-
```
|
|
222
|
+
```json
|
|
219
223
|
{
|
|
220
224
|
"session_id": "abc123",
|
|
221
225
|
"transcript_path": "",
|
|
222
226
|
"cwd": "/home/user/my-project",
|
|
223
227
|
"hook_event_name": "UserPromptSubmit",
|
|
228
|
+
"cli_version": "0.4.2",
|
|
224
229
|
"prompt": "Refactor the auth module"
|
|
225
230
|
}
|
|
226
231
|
```
|
|
227
232
|
|
|
228
233
|
### `SessionStart`
|
|
229
234
|
|
|
230
|
-
```
|
|
235
|
+
```json
|
|
231
236
|
{
|
|
232
237
|
"session_id": "abc123",
|
|
233
238
|
"transcript_path": "",
|
|
234
239
|
"cwd": "/home/user/my-project",
|
|
235
240
|
"hook_event_name": "SessionStart",
|
|
241
|
+
"cli_version": "0.4.2",
|
|
236
242
|
"source": "startup"
|
|
237
243
|
}
|
|
238
244
|
```
|
|
239
245
|
|
|
240
246
|
### `Stop`
|
|
241
247
|
|
|
242
|
-
```
|
|
248
|
+
```json
|
|
243
249
|
{
|
|
244
250
|
"session_id": "abc123",
|
|
245
251
|
"transcript_path": "",
|
|
246
252
|
"cwd": "/home/user/my-project",
|
|
247
253
|
"hook_event_name": "Stop",
|
|
254
|
+
"cli_version": "0.4.2",
|
|
248
255
|
"stop_reason": "turn_complete"
|
|
249
256
|
}
|
|
250
257
|
```
|
|
@@ -385,7 +392,7 @@ rule ::= toolName | toolName(content)
|
|
|
385
392
|
| File glob | `"Edit(src/*.ts)"` | TypeScript files under `src/` |
|
|
386
393
|
| Prefix (legacy) | `"Bash(npm:*)"` | `npm`, `npm install`, `npm run …` |
|
|
387
394
|
|
|
388
|
-
```
|
|
395
|
+
```json
|
|
389
396
|
{
|
|
390
397
|
"hooks": {
|
|
391
398
|
"PreToolUse": [
|
|
@@ -444,29 +451,17 @@ Plugins can ship a `hooks/hooks.json` file at the plugin root. The format is ide
|
|
|
444
451
|
|
|
445
452
|
## Session environment files (`CODA_ENV_FILE`)
|
|
446
453
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
### Mode 1 — External env file (process-level)
|
|
450
|
-
|
|
451
|
-
Set `CODA_ENV_FILE` in your shell before launching Coda. Its contents are prepended to every Bash command:
|
|
452
|
-
|
|
453
|
-
```bash
|
|
454
|
-
export CODA_ENV_FILE=~/.coda/my-env.sh
|
|
455
|
-
coda
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
### Mode 2 — Hook-writable env file (hook-level)
|
|
454
|
+
The hook runtime can give `SessionStart` hooks a writable `CODA_ENV_FILE`, and embedders can use the session-environment API to prepend those exports to later Bash commands. The current CODA CLI does **not** connect that optional callback to its Bash tool, so these files do not currently change later CLI commands. Treat this as an embedding API rather than a CLI feature.
|
|
459
455
|
|
|
460
|
-
|
|
456
|
+
A `SessionStart` hook may still write the file for a host that supports it:
|
|
461
457
|
|
|
462
458
|
```bash
|
|
463
459
|
#!/bin/bash
|
|
464
|
-
|
|
465
|
-
source .venv/bin/activate
|
|
466
|
-
echo "export VIRTUAL_ENV=$VIRTUAL_ENV" >> "$CODA_ENV_FILE"
|
|
467
|
-
echo "export PATH=$PATH" >> "$CODA_ENV_FILE"
|
|
460
|
+
echo "export VIRTUAL_ENV=$PWD/.venv" >> "$CODA_ENV_FILE"
|
|
468
461
|
```
|
|
469
462
|
|
|
463
|
+
Do not rely on this for the standard CLI today; configure the environment before launching CODA instead.
|
|
464
|
+
|
|
470
465
|
---
|
|
471
466
|
|
|
472
467
|
## Async hooks
|
|
@@ -475,9 +470,9 @@ By default hooks run **synchronously** — the lifecycle event waits for every m
|
|
|
475
470
|
|
|
476
471
|
### `async: true` — tracked background
|
|
477
472
|
|
|
478
|
-
The hook runs in the background. Results are polled at the start of each turn
|
|
473
|
+
The hook runs in the background. Results are polled at the start of each turn. Completed `additionalContext` is injected into the conversation as an `[Async hook]` user message before that turn proceeds.
|
|
479
474
|
|
|
480
|
-
```
|
|
475
|
+
```json
|
|
481
476
|
{
|
|
482
477
|
"type": "command",
|
|
483
478
|
"command": ".coda/hooks/slow-analysis.sh",
|
|
@@ -490,7 +485,7 @@ The hook runs in the background. Results are polled at the start of each turn an
|
|
|
490
485
|
|
|
491
486
|
The hook runs fully detached. If it exits with code 2, its stderr/stdout is injected as a system message that re-engages the model. Useful for background file watchers or integrity checkers.
|
|
492
487
|
|
|
493
|
-
```
|
|
488
|
+
```json
|
|
494
489
|
{
|
|
495
490
|
"type": "command",
|
|
496
491
|
"command": ".coda/hooks/file-integrity-watcher.sh",
|
|
@@ -508,7 +503,7 @@ A hook can decide at runtime to go async by printing `{"async": true}` as its fi
|
|
|
508
503
|
|
|
509
504
|
Set `disableAllHooks: true` in `config.json` to disable all hooks globally. Useful in CI environments or when debugging unexpected behavior:
|
|
510
505
|
|
|
511
|
-
```
|
|
506
|
+
```json
|
|
512
507
|
{
|
|
513
508
|
"disableAllHooks": true
|
|
514
509
|
}
|
|
@@ -531,8 +526,9 @@ Set `disableAllHooks: true` in `config.json` to disable all hooks globally. Usef
|
|
|
531
526
|
| Variable | Value |
|
|
532
527
|
| --- | --- |
|
|
533
528
|
| `CODA_PROJECT_DIR` | Current project directory |
|
|
529
|
+
| `CODA_VERSION` | The running Coda version (what `coda --version` prints) — same value as the `cli_version` payload field. Set by Coda and authoritative: it overrides any `CODA_VERSION` you exported, and is absent (not empty) when the running version is unknown |
|
|
534
530
|
| `CODA_PLUGIN_ROOT` | Plugin installation directory (plugin hooks only) |
|
|
535
|
-
| `CODA_ENV_FILE` | Writable env file path
|
|
531
|
+
| `CODA_ENV_FILE` | Writable env file path for `SessionStart` hooks. It affects later Bash calls only in an embedding that wires session-environment support; the standard CLI currently does not. |
|
|
536
532
|
|
|
537
533
|
All other environment variables from the Coda process are also inherited.
|
|
538
534
|
|
|
@@ -561,7 +557,7 @@ All other environment variables from the Coda process are also inherited.
|
|
|
561
557
|
|
|
562
558
|
### Block `git push` in a project
|
|
563
559
|
|
|
564
|
-
```
|
|
560
|
+
```json
|
|
565
561
|
{
|
|
566
562
|
"hooks": {
|
|
567
563
|
"PreToolUse": [
|
|
@@ -602,7 +598,7 @@ All other environment variables from the Coda process are also inherited.
|
|
|
602
598
|
|
|
603
599
|
### Log every session to a file
|
|
604
600
|
|
|
605
|
-
```
|
|
601
|
+
```json
|
|
606
602
|
{
|
|
607
603
|
"hooks": {
|
|
608
604
|
"SessionStart": [
|
|
@@ -642,38 +638,6 @@ All other environment variables from the Coda process are also inherited.
|
|
|
642
638
|
}
|
|
643
639
|
```
|
|
644
640
|
|
|
645
|
-
### Activate a Python venv for the whole session
|
|
646
|
-
|
|
647
|
-
```bash
|
|
648
|
-
#!/bin/bash
|
|
649
|
-
# .coda/hooks/activate-venv.sh
|
|
650
|
-
# Used as a SessionStart hook
|
|
651
|
-
if [ -f ".venv/bin/activate" ]; then
|
|
652
|
-
source .venv/bin/activate
|
|
653
|
-
echo "export VIRTUAL_ENV=\"$VIRTUAL_ENV\"" >> "$CODA_ENV_FILE"
|
|
654
|
-
echo "export PATH=\"$PATH\"" >> "$CODA_ENV_FILE"
|
|
655
|
-
fi
|
|
656
|
-
```
|
|
657
|
-
|
|
658
|
-
```jsonc
|
|
659
|
-
{
|
|
660
|
-
"hooks": {
|
|
661
|
-
"SessionStart": [
|
|
662
|
-
{
|
|
663
|
-
"hooks": [
|
|
664
|
-
{
|
|
665
|
-
"type": "command",
|
|
666
|
-
"command": ".coda/hooks/activate-venv.sh"
|
|
667
|
-
}
|
|
668
|
-
]
|
|
669
|
-
}
|
|
670
|
-
]
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
```
|
|
674
|
-
|
|
675
|
-
---
|
|
676
|
-
|
|
677
641
|
## Troubleshooting
|
|
678
642
|
|
|
679
643
|
**Hooks are not running**
|
|
@@ -698,7 +662,7 @@ fi
|
|
|
698
662
|
|
|
699
663
|
## See also
|
|
700
664
|
|
|
701
|
-
- [Configuration](configuration
|
|
702
|
-
- [
|
|
703
|
-
- [
|
|
704
|
-
- [
|
|
665
|
+
- [Configuration](#configuration) — where `config.json` files live and how they merge.
|
|
666
|
+
- [Extend CODA](#guide-extend) — plugins, extensions, agents, skills, and MCP.
|
|
667
|
+
- [Writing Extensions](#extensions) — programmatic lifecycle hooks and tool interception.
|
|
668
|
+
- [Tools Reference](#tools-reference) — built-in tool names used in matcher patterns.
|
|
@@ -32,7 +32,7 @@ CODA draws on a few different kinds of memory:
|
|
|
32
32
|
|
|
33
33
|
**In-session context** — everything you've said and everything CODA has read or done in the current session. This builds up as the session progresses, which is why later turns in a session are often better than earlier ones — CODA has more context.
|
|
34
34
|
|
|
35
|
-
**
|
|
35
|
+
**Project instructions (instructions you give)** — `AGENTS.md` is the preferred filename; `AGENT.md` and `CLAUDE.md` are fallbacks. CODA loads instructions from the launch directory at startup and can attach more-specific files as it reads deeper paths. This is how *you* describe conventions, quality gates, and constraints.
|
|
36
36
|
|
|
37
37
|
**MEMORY.md (facts CODA learns)** — durable notes the agent keeps across sessions: your preferences, decisions, and project gotchas. Unlike AGENTS.md, CODA writes this one itself as it learns. It even survives checkpoint rollbacks — restoring an earlier point never erases what CODA has remembered.
|
|
38
38
|
|
|
@@ -44,13 +44,13 @@ The two files you control directly play different roles:
|
|
|
44
44
|
| --- | --- | --- |
|
|
45
45
|
| **Who writes it** | You (or `/init`) | CODA, as it learns |
|
|
46
46
|
| **What goes in it** | Project conventions, quality gates, no-go zones | Preferences, decisions, gotchas |
|
|
47
|
-
| **Scope** |
|
|
47
|
+
| **Scope** | Launch-directory root, with more-specific on-read files below it | Global (`~/.coda/`) and per-project |
|
|
48
48
|
| **Survives rollback?** | It's your file — yes | Yes, excluded from checkpoints on purpose |
|
|
49
49
|
| **Commit to Git?** | Yes — share with the team | Usually no — it's agent scratch memory |
|
|
50
50
|
|
|
51
51
|
## Compaction: keeping context fresh
|
|
52
52
|
|
|
53
|
-
Long sessions accumulate a lot of history.
|
|
53
|
+
Long sessions accumulate a lot of history. Before each model call, CODA makes a simple two-way choice: **store directly** when the context fits, or **reduce** it when it does not. Reduction first moves stale, large tool results out of the active context and then, when the configured threshold is reached, condenses older messages into a summary while keeping recent messages verbatim. Original transcript rows remain stored, even though the model sees the reduced view.
|
|
54
54
|
|
|
55
55
|
You can also trigger compaction manually before switching topics:
|
|
56
56
|
|
package/assets/docs/index.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**CODA** (`coda`) is Globant's AI coding agent. You describe what you want in plain language; CODA reads your codebase, plans the work, makes changes, and runs commands — while you stay in control of every step.
|
|
4
4
|
|
|
5
|
-
This guide is the authoritative reference for using CODA.
|
|
5
|
+
This guide is the authoritative reference for using CODA. It is synced to the active CODA home under `docs/` (normally `~/.coda/docs/`) from the version you have installed. Cross-links use `#page-name` anchors that map directly to the file of the same name (for example, `#config-reference` → `config-reference.md`).
|
|
6
6
|
|
|
7
7
|
## Where to start
|
|
8
8
|
|
|
@@ -46,17 +46,18 @@ If you are brand new, read these in order:
|
|
|
46
46
|
- [Workflows](#workflows) — orchestrate many agents at once.
|
|
47
47
|
- [Writing Extensions](#extensions) — the extension API reference.
|
|
48
48
|
- [Lifecycle Hooks](#hooks) — shell/HTTP hooks that fire at session, tool, and prompt events.
|
|
49
|
+
- [Configure an MCP Server](#add-mcp-server-skill) — let CODA safely turn a package, command, repository, or URL into MCP configuration.
|
|
49
50
|
|
|
50
51
|
### Operations & reference
|
|
51
52
|
|
|
52
53
|
- [Configuration](#configuration) — how settings cascade and where they live.
|
|
53
54
|
- [Configuration Reference](#config-reference) — config keys, defaults, and environment variables.
|
|
54
55
|
- [config.json — A Complete Example](#config-json) — a full, annotated `config.json` you can copy from.
|
|
55
|
-
- [View & Share Logs](#logging) — `coda logs`, redaction, and support
|
|
56
|
-
- [FAQ](#faq) — short answers to common questions.
|
|
56
|
+
- [View & Share Logs](#logging) — `coda logs`, redaction, support bundles, and the support contact.
|
|
57
|
+
- [FAQ](#faq) — short answers to common questions, including how to check your installed version.
|
|
58
|
+
- **What changed?** Run `coda upgrade --check` to compare your installed version with the current release, then check the release notes published with that version.
|
|
57
59
|
- [Glossary](#glossary) — definitions for the terms used throughout.
|
|
58
|
-
- [Release History](#release-history) — notable changes by version.
|
|
59
60
|
|
|
60
61
|
## A note on safety
|
|
61
62
|
|
|
62
|
-
CODA is built to be safe on real codebases.
|
|
63
|
+
CODA is built to be safe on real codebases. Every tool call goes through an authorization decision, with `ask` actions sent to you for approval (see [Permissions & Approvals](#permissions)). CODA snapshots your files before every turn so you can roll back (see [Sessions & Checkpoints](#sessions)), and it never touches your project's own Git history. If you only remember one thing: when CODA heads the wrong way, press **Esc** to interrupt, then redirect — that is faster than undoing a pile of changes.
|
|
@@ -23,7 +23,7 @@ curl -fsSL https://docs.globant.ai/en/filedownload?4622,12 | bash
|
|
|
23
23
|
irm 'https://docs.globant.ai/en/filedownload?5346,6' | iex
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Alternatively,
|
|
26
|
+
Alternatively, install the `@globant/coda` launcher from the public npm registry. This requires Node.js; the install script above does not:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
npm i -g @globant/coda
|
|
@@ -47,12 +47,12 @@ Knowing the layout helps when you troubleshoot:
|
|
|
47
47
|
|
|
48
48
|
## Keeping CODA up to date
|
|
49
49
|
|
|
50
|
-
To upgrade later, run `coda upgrade` from your terminal, or `/upgrade` from inside the TUI. CODA
|
|
50
|
+
To upgrade later, run `coda upgrade` from your terminal, or `/upgrade` from inside the TUI. CODA checks the configured release registry—public npm by default, or your `CODA_NPM_REGISTRY` mirror—for the latest `@globant/coda` launcher version, then picks the right mechanism automatically:
|
|
51
51
|
|
|
52
|
-
- **Installed via npm** → it upgrades
|
|
53
|
-
- **Installed via the script** → it swaps
|
|
52
|
+
- **Installed via npm** → it upgrades `@globant/coda` globally so npm's package metadata stays consistent.
|
|
53
|
+
- **Installed via the script** → it downloads the matching platform package, verifies its integrity, and atomically swaps the native binary under `~/.coda/bin`.
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Use `coda upgrade --check` to compare your current and latest versions without installing.
|
|
56
56
|
|
|
57
57
|
## Troubleshooting the install
|
|
58
58
|
|
package/assets/docs/logging.md
CHANGED
|
@@ -114,7 +114,7 @@ When you can't tell what happened from the rendered view, press **Space**/**Ente
|
|
|
114
114
|
1. Reproduce the issue so it's fresh in the logs.
|
|
115
115
|
2. Run `coda logs export` (optionally `--since 30m` to scope it).
|
|
116
116
|
3. Open the printed file from `~/.coda/exports/` and skim it — redaction is automatic, but a glance confirms it.
|
|
117
|
-
4. Attach it. Nothing was uploaded; the bundle only contains what you choose to share.
|
|
117
|
+
4. Attach it to your support request, or email it to **coda-tech-support@globant.com**. Nothing was uploaded; the bundle only contains what you choose to share.
|
|
118
118
|
|
|
119
119
|
## See also
|
|
120
120
|
|
package/assets/docs/overview.md
CHANGED
|
@@ -26,13 +26,13 @@ A session is a back-and-forth loop. You set the goal; CODA does the work and che
|
|
|
26
26
|
| Review what it's about to do | Edits files, runs shell commands |
|
|
27
27
|
| Approve, adjust, or undo | Saves checkpoints so nothing is permanently lost |
|
|
28
28
|
|
|
29
|
-
In practice, a turn looks like this: you send a message, CODA snapshots your files, then it reasons
|
|
29
|
+
In practice, a turn looks like this: you send a message, CODA snapshots your files, then it reasons and calls tools (reading, searching, editing, running commands). Every tool call passes through the authorization engine; only an `ask` decision pauses for your approval. CODA finally summarizes what it did. You can interrupt at any time with **Esc** and redirect.
|
|
30
30
|
|
|
31
|
-
The longer a session runs, the more context CODA accumulates — which is why later turns are often sharper than the first. When the conversation grows large, CODA
|
|
31
|
+
The longer a session runs, the more context CODA accumulates — which is why later turns are often sharper than the first. When the conversation grows large, CODA reduces the active context automatically: stale tool output moves aside first, and older history is summarized when needed. See [How CODA Works](#how-it-works).
|
|
32
32
|
|
|
33
33
|
## Two ways to run it
|
|
34
34
|
|
|
35
|
-
**Interactive (TUI)** — a full-screen terminal UI. Type prompts, review tool output, approve
|
|
35
|
+
**Interactive (TUI)** — a full-screen terminal UI. Type prompts, review tool output, approve actions, switch models, and navigate your session history in real time. This is how you'll use CODA day-to-day.
|
|
36
36
|
|
|
37
37
|
**Headless (Batch)** — a single command, no UI. Give CODA a prompt from the shell, it runs, and exits with a status code. Use this in scripts, CI pipelines, and automation.
|
|
38
38
|
|
|
@@ -42,10 +42,11 @@ Both share the same agent, the same configuration, and the same tools — the di
|
|
|
42
42
|
|
|
43
43
|
## What stays in your control
|
|
44
44
|
|
|
45
|
-
- **
|
|
45
|
+
- **Authorization** — every tool call is allowed, denied, or sent to you for approval according to the current mode and rules. See [Permissions & Approvals](#permissions).
|
|
46
46
|
- **Undo** — every turn is checkpointed; restore any point from the `/timeline` picker.
|
|
47
47
|
- **Secrets** — API keys live in `~/.coda/.secrets`, never committed to Git, and are scrubbed from logs before they hit disk. See [Configuration](#configuration) and [View & Share Logs](#logging).
|
|
48
48
|
- **Your Git history** — checkpoints use a separate private shadow repository, so `git log`, branches, and commits are entirely yours.
|
|
49
|
+
- **Transcript controls** — drag across rendered text to copy the selection, press **Ctrl+Shift+C** to copy the latest complete fenced code block, and use **Ctrl+Up** / **Ctrl+Down** to scroll.
|
|
49
50
|
|
|
50
51
|
## When to reach for CODA (and when not to)
|
|
51
52
|
|
|
@@ -65,7 +66,7 @@ Every turn follows the same shape. Understanding it makes CODA predictable:
|
|
|
65
66
|
1. **You send a message.** CODA snapshots your files (a checkpoint) before doing anything.
|
|
66
67
|
2. **It reasons and plans.** For non-trivial work it sketches the steps first.
|
|
67
68
|
3. **It calls tools.** Reading files, searching, editing, running shell commands — one or more at a time.
|
|
68
|
-
4. **It
|
|
69
|
+
4. **It authorizes each tool call.** `allow` runs, `deny` returns a refusal, and `ask` pauses for your decision.
|
|
69
70
|
5. **It summarizes** what changed and why, then hands the turn back to you.
|
|
70
71
|
|
|
71
72
|
At any point you can press **Esc** to interrupt and redirect — that is almost always faster than letting it finish and undoing the result.
|
|
@@ -76,7 +77,7 @@ A session is more than a chat log. As it runs, CODA builds up:
|
|
|
76
77
|
|
|
77
78
|
- **Conversation context** — your prompts and its work so far. This is why later turns are often sharper than the first.
|
|
78
79
|
- **What it read from disk** — always the live file, never a stale cache.
|
|
79
|
-
-
|
|
80
|
+
- **Project instructions** — `AGENTS.md` (or the `AGENT.md` / `CLAUDE.md` fallback) from the launch directory, plus more-specific instructions attached when CODA reads deeper files.
|
|
80
81
|
- **`MEMORY.md` facts** — durable notes CODA writes for itself and carries across sessions.
|
|
81
82
|
|
|
82
83
|
See [How CODA Works](#how-it-works) for the mechanics of tools, memory, and compaction.
|