“Not authenticated” (exit 2)
- Run
omi auth loginand paste a dev key, or export OMI_API_KEY=omi_dev_...in the current shell.
omi auth status.
”That doesn’t look like an Omi developer key” (exit 1)
The CLI validates the key’s prefix client-side before ever calling the API. Real dev keys start withomi_dev_ and are at least ~24 characters long.
If you see this from OMI_API_KEY, double-check that you pasted the whole
token and didn’t accidentally include Bearer or wrap it in quotes that
made it into the env value.
”Insufficient permissions” (exit 2)
omi memory create requires memories:write but a read-only key
only has memories:read.
Generate a new key in the Omi web app under Developer → API Keys with the
scope you need, then omi auth login to swap it in.
”Rate limited” (exit 4)
| Policy | Limit |
|---|---|
dev:conversations | 25 / hour |
dev:memories | 120 / hour |
dev:memories_batch | 15 / hour |
Retry in Ns value
and try again — see For agents for a worked
backoff example.
”Server error” (exit 3)
5xx response from the API after retries exhausted. The CLI already retried
4 times with backoff, so the issue is server-side. Try again in a minute; if
the problem persists, check the Omi status page or report it.
”No such option: —json” with the flag after the verb
Token rolled back after a failed login verification
Ifomi auth login succeeds but the verification round-trip returns 401, the
CLI clears the just-stored credential — better to be unauthenticated than
silently broken. The fix: regenerate the key in the Omi web app and try
again. Network errors don’t trigger the rollback (the credential is kept and
the CLI just warns).
OAuth: “OAuth flow timed out”
- Browser didn’t open. Visit the URL the CLI printed manually.
- A firewall blocked the loopback redirect. Try
--api-keyinstead. - You closed the browser tab before the redirect fired.
omi auth login --browser.
OAuth: “OAuth state mismatch”
state token in the callback
URL didn’t match what the CLI generated. This shouldn’t happen in practice;
if it does, run omi auth login --browser again. Don’t paste random URLs.
OAuth: “Firebase refresh failed”
omi auth login --browser
to mint a fresh pair. Your data is safe; only the local credentials are
stale.
OAuth: which provider?
By default,omi auth login --browser uses Google. To use Apple Sign-In:
Where state lives
0600 for the file, 0700 for the parent dir).
If you ever see permissions other than these, something modified the file
outside of omi-cli — fix with chmod 600 ~/.omi/config.toml.
To wipe everything:
Verbose mode for debugging
--json if your script expects JSON.
Still stuck?
- Check the Command reference for the exact expected flags.
- File an issue at
github.com/BasedHardware/omi
with the failing command, the full stderr, and the
omi --versionoutput.