Skip to content
Docs / Security & privacy

Reference

Security & privacy

The AI drafts, you publish. Only a description of your commit leaves your machine — never your code.

The AI never publishes#

Writing a draft and publishing a build log are separate steps, on separate requests. The request that asks the AI for a draft stores nothing on Kairo, and the request that publishes never calls the AI. What gets published is exactly what was on your screen when you said yes.

You always approve#

  • Publishing takes two answers: P at the draft, then Y to a question naming the project and repository it’s going to.
  • With no terminal to ask — CI, a pipe, an editor’s commit button — nothing is ever published. The CLI prints the draft and stops.
  • The post-commit hook only starts a review. It goes through the same two answers.

Repository ownership is checked#

You can only publish to a project you own, from a repository connected to it:

  • Connecting goes through GitHub. A repository is connected on the project’s page using Kairo’s GitHub App, and only repositories that the app has been granted, and that your GitHub account can access, are offered.
  • Every request is checked on the server. The CLI sends the repository name from your origin remote; Kairo looks for that repository on a project owned by the signed-in account. The CLI can’t choose a different project.
  • Nothing leaks about other people’s repositories. “Not connected”, “connected to someone else’s project” and “project deleted” all get the same answer: isn’t connected to a Kairo project you own.

Only commit metadata is sent#

To find your project and write a draft, the CLI sends Kairo a description of your latest commit:

FieldExample
Repositoryada/lighthouse, from the origin remote
Commit hash79de83c…
Branchmain
Commit messageThe full message, subject and body
AuthorName and email from the commit
Commit timeWhen the commit was made
Size of the changeNumber of files changed, lines added and lines removed

Of these, only the commit message, branch and size of the change are passed to the AI model that writes the draft. When you publish, the CLI sends the repository, the commit hash and your approved title and summary.

Your source code is never uploaded#

The CLI sends no diff, no file contents and no file names — only the counts above. The AI knows how big a change was and what your commit message says about it, not what the code does.

Drafts stay on your machine#

Unpublished drafts are kept only in your local config directory. Kairo doesn’t store a draft until you publish it.

Your sign-in#

No API keys to paste

kairo login uses browser approval of a short code. The token goes straight to the terminal that asked for it; the browser never sees it.

Stored privately

  • The token is saved in credentials.json in your user’s config directory. On macOS and Linux the file is readable by your user account only.
  • It’s only ever sent to the Kairo server it was issued by.
  • It lasts 90 days.

Revocable

kairo logout deletes the token from the machine and revokes it on Kairo, so a copied token stops working too.