Skip to main content

Overview

The Every CLI (@everyai/cli) gives you and your coding agents command-line access to your Every workspace — clients, contacts, invoices, proposals, deals, pipeline, payments, and more. Install it once, sign in once, and the same every command works everywhere a shell runs: Claude Code, Codex, Cursor, a plain terminal, or a CI job. Under the hood the CLI is a client of Every’s MCP server, so it discovers the current tool surface automatically. Keep the CLI current for new client-side behavior such as approval handling.
If you’d rather use Every inside one assistant, you can add the MCP server to it directly — see Connect to Claude & ChatGPT. The CLI is the portable alternative: one install and one login cover every agent and machine context, including CI, where per-assistant MCP config isn’t practical.

Install and sign in

Requires Node.js 18 or newer.
1

Install globally

This installs two identical commands: every (primary) and everyai (alias).
2

Sign in

Opens your browser to authenticate with your Every account (OAuth 2.0 + PKCE). Tokens are stored in your operating system’s keychain and refreshed automatically — you won’t need to sign in again for a long time.
3

Confirm who you are

Shows the signed-in user, the organization your commands act on, the environment, and how many tools are available. Always worth checking before a write, so you know exactly which workspace it lands in.
Headless / CI: set the EVERY_TOKEN environment variable to a valid access token to skip the browser flow entirely. every login requires an interactive terminal and exits with code 3 without one, so it never hangs a script.

Output contract

Every command supports --json. In JSON mode, stdout is exactly one JSON document and nothing else, so it’s safe to pipe and parse:
Branch on the process exit code rather than scraping text: The env field on every JSON response tells you whether the command targeted production, staging, or a custom server — a quick way to confirm blast radius.

Safety model

The CLI classifies every tool and gates it locally, then Every applies its server-side approval policy:
  • Reads run freely.
  • Writes (create/update) require --yes.
  • Destructive or external-impact actions — sending invoices/proposals, deletes, voids, recording payments — require both --yes and --allow-destructive.
  • --read-only (or the EVERY_READ_ONLY=1 environment variable) blocks anything that isn’t a read, for safe automation.
For ordinary writes, Every may return an exact action-and-target confirmation. In an interactive terminal, CLI 0.6.3 or newer can confirm the trusted phrase and retry once after your local consent. Higher-impact actions also create a request in Every → Settings → Approvals. The CLI never automatically retries a human-approved action: after approving, rerun the identical command with the same arguments and flags within 10 minutes. In a non-interactive context, a missing flag fails fast with exit code 4 and names the exact flag needed — it never silently prompts and hangs.
Only add --yes when the human explicitly asked for the change, and only add --allow-destructive when they explicitly asked for the send/delete/payment. These flags confirm local intent; they do not replace a server-required approval.

How MCP approvals work

Review the exact retry, expiry, and single-use rules

Commands

every invoice create resolves the client by name — if the name is ambiguous it returns exit code 6 with the candidate list (each client_id and name) so a retry with --client-id is mechanical.

For AI agents

If you’re a coding agent driving this CLI, four rules make you reliable:
  1. Always pass --json and read the envelope (ok, data/error.code, env, schema_version).
  2. Branch on exit codes, not on stderr text — exit 3 means tell the user to run every login.
  3. Never guess an ID. List or search first, then act with the exact ID returned in [id: ...].
  4. Only add --yes / --allow-destructive when the human explicitly asked for that write or send.
Every ships a skill that encodes these rules plus Every’s domain workflows. Install it so your agent follows them automatically — see Agent skill (use-every).