// HOW FINCH DIFFERS
Finch is marked ● on seven of eighteen rows.
A comparison where the author wins everything is marketing, so this one is built to be checked — every cell traces to vendor documentation or source.
● yes · ◐ partial · ○ no · ▣ planned, tracked · ? not verifiable · verified September 2026
| FEATURE | FINCH | CLAUDE CODE | CODEX CLI | CURSOR | GEMINI CLI | OPENCODE | CLINE | GOOSE | AIDER |
|---|---|---|---|---|---|---|---|---|---|
| Typed programs verified before host effects | ●1 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| Adversarial multi-persona critique loop with a convergence gate | ●58 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○59 |
| Daemon-owned live session reattach | ● | ● | ○ | ●2 | ▣3 | ● | ●4 | ○ | ○ |
| Named state survives a machine reboot | ●5 | ○6 | ○ | ◐7 | ○ | ◐8 | ◐7 | ○ | ○ |
| Multi-client attach with distinct roles | ●9 | ○10 | ○ | ○ | ○ | ◐11 | ◐11 | ○ | ○ |
| Vendor-neutral multi-provider support | ●27 | ○30 | ◐28 | ◐29 | ○31 | ● | ● | ● | ● |
| Vendor subscription login | ◐12 | ● | ● | ●13 | ○14 | ●15 | ○16 | ◐17 | ○ |
| Local models | ◐18 | ○ | ●19 | ○ | ○ | ● | ● | ● | ● |
| MCP client | ● | ● | ● | ● | ● | ● | ● | ● | ○20 |
| Exposes itself as an MCP server | ○ | ● | ○ | ○ | ○ | ○ | ○ | ▣46 | ○ |
| User-code lifecycle hooks | ◐47 | ● | ● | ?48 | ● | ● | ●49 | ●50 | ○51 |
| Commits unprompted, with no instruction to57 | ◐52 | ○53 | ○54 | ○ | ○53 | ◐55 | ○53 | ○ | ●56 |
| Persistent repository semantic map | ▣32 | ○ | ○ | ?35 | ○ | ○ | ○ | ◐34 | ●33 |
| Image input | ▣36 | ● | ● | ?39 | ● | ● | ● | ●38 | ●37 |
| Remote control of a session on your own machine | ◐40 | ●41 | ◐42 | ○ | ○ | ●43 | ?45 | ◐44 | ○ |
| Screen-reader mode | ○21 | ●22 | ○ | ○ | ◐23 | ○24 | ○ | ○ | ○ |
| OS-level execution sandbox | ▣25 | ● | ● | ◐ | ● | ○ | ○ | ○ | ○ |
| OSI open-source licence | ○26 | ○ | ● | ○ | ● | ● | ● | ● | ● |
- The verifier returns a checked module that gates execution; capability requirements and effect rows resolve first, and VM checkpoints are re-verified on restore rather than trusted. Nothing else here does this. Anthropic's code-execution-with-MCP, Cloudflare Code Mode, CodeAct/smolagents, E2B and WASM tool sandboxes all isolate execution instead of checking it; pre-execution effect verification exists only in research.
agent persistandagent persist attach.- A daemon mode with named-session reattach exists as an open, unmerged pull request; what ships today is transcript resume.
- The CLI's hub daemon owns session state; the IDE extension resumes transcripts instead.
- Event log plus typed VM checkpoint on disk, re-verified on restore; covered by restart regression tests in the Brain store.
- Survives supervisor self-restart, but falls back to reconstructing from disk on reboot and marks a session failed after 48 hours.
- Not documented either way.
- Designed to, but in-flight tool calls are reported to freeze permanently on server restart.
- Driver, Consultant and Observer.
- Single-writer — “this session is running in another terminal”.
- One live session shared by several clients, but flat access with no role distinction.
- ChatGPT only.
- A Cursor account is required regardless; bring-your-own-key changes only who pays for tokens.
- Consumer login ended 18 June 2026; users were moved to a separate successor CLI.
- ChatGPT Plus, GitHub Copilot and GitLab Duo with zero setup. The Claude Pro/Max plugins were unbundled at 1.3.0 — Anthropic prohibits that use.
- Shells out to a separately installed Claude Code rather than implementing its own login.
- Native for ChatGPT and Gemini; Claude only through a third-party passthrough.
- A configured local profile does not yet guarantee a query is routed locally.
- Built-in
ollamaandlmstudioprovider IDs, dedicated crates, an--osspicker, default ports 11434 and 1234. - The community pull request was closed unmerged; a fork carries it.
- Accessibility is stated as a project invariant in Finch and is not met: the only click path takes raw screen coordinates. Adjacent work is tracked — #310 for accessible file-context selection and #453 for semantic GUI addressing — but no screen-reader mode is scoped, so this stays ○ rather than ▣.
--ax-screen-reader, labelled turn prefixes, numbered menus replacing arrow-key navigation, OSC 133 turn markers.- A documented screen-reader setting, with open regressions against it.
- The screen-reader request was closed as “not planned”.
- An approval boundary only — no Seatbelt, bubblewrap, Landlock or seccomp anywhere in the source today. The mechanism is scoped and tracked: #434 decides the per-platform sandbox for confining shell commands, and #89 runs model edits in isolated changeset overlays. The mark stays ○ because planned is not shipped.
- PolyForm Noncommercial: source-available, and business use needs a commercial licence.
- Seven provider families in
finch setup, plus local and remote-daemon profile types. A subscription credential and an API key never cross-bind. - Any endpoint via
[model_providers.<id>], but it must speak OpenAI's Responses or Chat Completions wire shape, so a competing vendor's native API needs a shim in front of it. - Multi-vendor including your own key, but the documentation states all requests route through Cursor's servers for final prompt building.
- Anthropic's gateway documentation states it does not support routing Claude Code to non-Claude models. Bedrock and Vertex are still Claude, on a different cloud.
- Only
GOOGLE_GEMINI_BASE_URLandGOOGLE_VERTEX_BASE_URLoverrides, both Google. OpenAI-compatible support is an open, unshipped request. - Tracked in #320, investigate Tree-sitter repository maps for context selection.
- The canonical example. Tree-sitter extracts symbol definitions and references, then PageRank over the reference graph ranks them to fit the context budget — structural centrality, not vector similarity.
- An
analyzetool returns tree-sitter symbol listings and call graphs, computed fresh per call with no persistence, so it is a tool rather than an index. - Not verifiable. The CLI documents fast grep and an Explore subagent; whether the editor's separate embedding index applies to the CLI is not stated either way.
- Tracked in #135, finish end-to-end image paste and attachment support.
/add,/pasteor a filename argument; explicitly requires a vision-capable model.- Paste and drag-and-drop in the desktop app, capped at ten images per message, plus an
image_readtool agent-side. - Not verifiable. The CLI documentation is silent on images; open community requests suggest it is unsupported, which is not a primary confirmation.
- A restricted Brain TLS listener for collaboration, opened only when service advertisement is enabled. That is peer attachment, not mirroring a live console to a phone.
- Remote Control connects claude.ai or the mobile apps to a session running on your machine; execution and filesystem access stay local. Distinct from the cloud-executed web product.
- The mobile app pairs by QR code to the desktop app over a relay, with execution local. Not confirmed to reach a session started from a terminal.
opencode serveexposes a local HTTP server another device can drive, optionally network-bound with basic auth./shareis a read-only transcript link instead.goose roamexists in documentation but ships in no released binary — it requires building from source behind a feature flag, so a reader downloading Goose today does not get it.- Not verifiable.
cline kanbanis a local task board; remote access to an already-running session is not documented. - An open, unimplemented request to expose Goose itself over MCP; it is an MCP client today.
- One undocumented event. If
~/.finch/hooks/post-saveexists it is spawned with the file path after an edit or write succeeds, fire-and-forget: Finch does not wait for it, read its output, or act on its exit code. It cannot gate or alter an operation the way aPreToolUsehook elsewhere can, and there is no configuration and no other event. Reading Claude Code and Codex hook configurations natively — so existing scripts work unchanged, with gating and diagnostics fed back into the model’s next turn — is specified in #470. - Not verifiable.
hooks.jsonis real and runs user code, but the documentation covers the editor and cloud agents; no CLI reference states thatcursor-agentloads them. - Available in the CLI, SDK and Kanban, and explicitly not in the editor extensions.
- An Open Plugins hooks specification. Its own documentation notes that
SubagentStartandStopare declared but never actually emitted. --lint-cmdand--test-cmdfire at two fixed points. There is no named-event hook API.- Only the
finch agentautonomous mode stages and commits, using a persona git identity, and only when the task names a repository. The interactive console never does. That mode is an early prototype rather than a supported path, so read this ◐ narrowly. - Checkpointing and Checkpoints are internal or shadow-repository snapshots; their own documentation states they do not commit to your project's git history, which is why they do not score here.
- Forbidden in the base model instructions — do not commit unless explicitly requested.
- Only the GitHub Actions bot integration commits by itself, from its own wrapper rather than the model. The ordinary CLI does not.
- Default on. Commits every edit with a generated message, and commits pre-existing dirty changes before editing.
- Read this row narrowly. Every harness here will commit when you tell it to, and instructing a commit after each discrete edit — through
CLAUDE.md,AGENTS.mdor a prompt — is the ordinary way people work, including on Finch itself. The row records only what a tool does with no instruction at all, which is a difference in default rather than in capability. Codex is ○ because its base instructions actively forbid an uninstructed commit, not because it cannot make one. - Six critique personas activate on deterministic keyword rules. An item at severity 8 and confidence 7 or above is must-address and blocks convergence, which additionally requires the plan to stabilise within a 15% character delta, over at most three iterations by default. The purpose is to let a cheaper model reach a better answer by constraining how it reasons and iterating before you ever see the result — paid for in tokens. User steering is still open in #22.
- The near neighbours, none of which iterate: plan modes in Claude Code, Cursor and Gemini CLI analyse and propose in a single pass; Codex's optional
auto_reviewscreens approval requests with a reviewer agent; Aider's architect mode splits proposing from editing across two models. No convergence criterion and nothing that blocks on unresolved critique.
These facts drift quickly; if you are reading this long after September 2026, re-check before relying on a row. Two naming notes: OpenCode’s repository moved from the sst organisation to anomalyco, and Goose moved from Block to the Linux Foundation’s Agentic AI Foundation in April 2026. Aider is included because it remains widely used, though its main branch has been untouched since May 2026.