Security and permissions

What the Ezeo connector and CLI can see and do, and what stops them doing more.

What it can see

Every path acts as you, never as Ezeo itself.

  • Reads run as your signed-in user, so row-level security in the database decides what you see: the same projects as in the app, and no others.
  • Neither the connector nor the CLI uses a service-role key.
  • Client accounts see a project only once it has been granted to them. The CLI refuses client accounts entirely.

Connector sign-in

The connector signs you in with OAuth 2.1.

  • Your assistant registers itself, sends you to Ezeo to sign in, and receives a token for your account. The exchange uses PKCE.
  • Before it connects you see an Ezeo consent page naming the account you are signed in as and the permissions requested. You can deny, or switch account.
  • Every request carries your token. The server checks it itself and then queries the database as you.
  • There are no personal API keys: only an agent that can complete the browser sign-in can connect.

The CLI

A command-line tool that runs on your machine.

  • It is for owners, admins and members of an Ezeo organization. ezeo login refuses a client account and stores nothing.
  • Your session is stored in ~/.config/ezeo/credentials.json (or under $XDG_CONFIG_HOME/ezeo), readable by you only (mode 0600). ezeo logout deletes it.
  • ezeo mcp talks to your agent over stdio on your machine, as the user who signed in.

Reading never spends. Anything that spends has a second step.

  • The connector's read tools call no paid API and no language model. Your own assistant plan pays for the model.
  • request_articles takes two calls. The first spends nothing and returns a preview, your remaining allowance and a short code. The second, with that code, starts the work. The code stops an agent confirming in one step, from an old preview, or after the count changed, and the agent is told to wait for your explicit yes. The database still decides who may spend.
  • In the CLI's tool server every paid tool first returns a dry run and a confirm token tied to that exact input, and runs only when called again with the token.
  • In a script, a paid CLI command refuses to run without --yes, and exits before any network call, so nothing is spent.

Honest numbers

Absence is never shown as zero.

  • A value that was not measured comes back as null with a note, and agents are told to say "not measured" instead of guessing.
  • get_sync_status shows whether each data source is still syncing, so you can check before trusting a figure that looks stale.

Disconnecting

Disconnect from the side where you added it.

  • To disconnect an assistant, remove Ezeo from that assistant's connector settings.
  • To sign the CLI out, run ezeo logout, which deletes the stored session.

More answers are in the FAQ. Read the FAQ

Stuck? Write to us. A person answers.llms.txtsecurity.md