FAQ & troubleshooting

FAQ & troubleshooting

The questions that come up most, and how to fix the things that trip people up when connecting a client or wondering why recall behaved the way it did.

About Kijito

Does Kijito train or modify the underlying model?

No. Kijito is an external memory layer. It stores and organizes experience your agent records and recalls; it does not change the model's weights or fine-tune it. The model keeps whatever it learned in training and adds durable, revisable memory on top.

What does Kijito mean by "experience"?

Retained outcomes that can affect later work: decisions and their reasons, what a result taught, corrections to earlier beliefs, and unfinished work that survives a session boundary. Kijito makes that experience persistent and retrievable - it does not claim to generate experience on its own.

What is automatic dreaming versus deep dreaming?

Automatic dreaming runs on a schedule: it groups related memories into themes for up to about a day after you sign in, while recall strengthens what your agents keep using. Nothing is removed from recall unless your agent corrects or fades it. Deep dreaming is agent-invoked: Kijito hands an agent a prioritized review worklist, and the agent verifies, connects, corrects, decomposes, or fades what it finds using explicit memory tools. See Concepts.

Which OpenAI products are currently verified?

None are verified yet. Today the verified paths are Claude Code, Claude.ai (web and desktop) and the REST API. Codex CLI is in testing; the ChatGPT connector and OpenAI Apps are planned. The Connections page carries the current per-client status.

Can a local or open-weight model use hosted Kijito?

Yes, through any MCP-capable host or the REST API. But running a local model does not make the hosted service operator-blind - the memory service is still hosted, so it stays encrypted at rest, not operator-blind. Self-hosting and a local decryption helper, which would keep decryption off our servers, are planned, not available yet.

What happens if Kijito can't reach my agent?

Nothing is lost while it waits: a message stays in the mailbox after it is sent, for up to 30 days unread (see how long messages are kept). Urgent delivery also sends a wake signal that carries no message content, but the recipient still pulls the message from Kijito, so if your agent is offline, it retrieves the message when it comes back. Delivery of the wake and consumption of the message are separate; "sent" does not mean an agent was resumed.

Why are there so many MCP tools?

Kijito exposes a full toolset over MCP because memory has many verbs - remember, recall, correct, update, fade, relate, dream, hive send/inbox, presence, and more. Day to day an agent reaches for a small core; the rest are there when a workflow needs them.

Connecting

My MCP client won't connect

Work down this list:

  • Use exactly https://api.kijito.ai/mcp, the Streamable HTTP URL from the connection guide. Some clients require the sign-in to match the URL you entered character for character, and there is no /sse endpoint.
  • Complete the OAuth sign-in when the client opens a browser. If nothing opens, Cmd-click or Ctrl-click the link, or copy it into your browser.
  • In Claude Code, add Kijito with claude mcp add --transport http --scope user kijito https://api.kijito.ai/mcp and sign in with claude mcp login kijito in your own terminal. If you added it for one project only (without --scope user), start Claude Code from that project's folder, or the tools won't appear.
  • Restart the client after adding the server so it re-reads its connector config.

My client's config file doesn't take the url key

The name of the URL key differs by client: url in most, serverUrl in Windsurf and Antigravity, httpUrl in Gemini CLI. Some, such as Cline and Copilot, also need a type. The connection guide gives each one.

I connected, but the memory tools don't show up

Almost always a config-not-reloaded issue: restart the client/session so it picks up the new MCP server (Claude Code loads a new server only when it starts; Codex needs a new session), and make sure you finished the sign-in step (an unauthenticated connection advertises no tools). If you're on the REST API instead, the "tools" are just the endpoints in the API reference.

It asks me to sign in again, but I'm already signed in on kijito.ai

That is the consent step, not an error. Signing in on the website does not let an agent into your memory; the sign-in your client starts is what grants that agent access, so it always asks, even when you are already signed in.

The sign-in page says "localhost refused to connect"

The command that printed the sign-in link was closed before you finished. The link only works while that command is still running, so run the sign-in yourself, in your own terminal, and keep it open until it says you are signed in. Don't let an agent run it and pass you the link: when the agent's command ends, the link dies with it.

Claude asks me to approve every recall and save

In Claude desktop or Claude.ai, open the Kijito connector under Settings → Connectors and, under Tool permissions, set both Read-only tools and Write/delete tools to Always allow. Both start at "Needs approval". If nobody approves a save, it does not happen and Claude sees "No approval received".

My sign-in lapsed. How do I sign in again?

Run the client's own sign-in again, yourself: claude mcp login kijito in Claude Code, codex mcp login kijito in Codex, opencode mcp auth kijito in OpenCode, cursor-agent mcp login kijito in Cursor. In Claude desktop or Claude.ai, connect Kijito again from Settings → Connectors.

Can I sign in over SSH or in CI?

The sign-in needs a browser on the machine that runs the client. On a remote machine, Claude Code's claude mcp login kijito --no-browser prints the link and asks you to paste back the address your browser lands on. For CI or anything unattended, use a scoped kjt_ API key instead of a sign-in.

Authentication

My API calls suddenly return 401

Access tokens are JWTs valid for one hour. A 401 after a while usually means the token expired. Mint a fresh one with your refresh token at POST /api/v1/auth/refresh (or sign in again) and retry - and store the new refresh_token the response returns, because refresh tokens are single-use and rotate on every call.

For long-running or unattended agents, mint a standalone API key instead - a scoped kjt_ bearer token that never expires unless you set it to - via POST /api/v1/auth/tokens (see the API reference). It works as the Bearer header for both the MCP server and the REST API, and it sidesteps refresh entirely. Keep the MCP connector's OAuth sign-in for interactive clients: every refresh rotates the token, so several unattended processes sharing one sign-in will invalidate each other's sessions.

Which API-key scopes does my agent need?

All four for an agent that works the whole loop: memory.read to recall, memory.write to save, memory.curate to correct and fade, and memory.dream to run dreaming. Give a key fewer only when you mean to limit what that agent can do.

Do I need to log in for every request?

No. Log in once to get the token, then send it as an Authorization: Bearer header on each call until it expires, and refresh when it does. MCP clients keep their own session, so you sign in once per client.

Recall behavior

Why didn't it recall something I know I saved?

A few things to check, roughly in order of likelihood:

  • Recall is by meaning, not keywords. If your query is worded very differently from the memory, similarity may be low. Ask in terms closer to the idea, or raise the limit. Writing memories in the words a future search would use makes them far more findable.
  • It may rank too low. Low-importance memories rank below closer, more important matches, so a broad query can leave them past the limit. Nothing drops out of recall on its own: only a fade or a correction removes a memory from recall. Give important memories a higher importance, or mark them permanent.
  • Scope or project mismatch. If the memory was stored under a specific project or a narrower scope than you're recalling with, it may be filtered out. Recall at the account (global) scope to be sure.
  • It was corrected or faded. A corrected memory is superseded by its newer version; a faded one is intentionally demoted. That is the system working, not a bug.
  • Different account. Memories never cross accounts. If you saved it while signed in as a different account, it won't appear.

See Concepts for how recall by meaning and the forgetting curve work.

It recalled an old fact that's no longer true

Ask your agent to correct it. Correction retires the stale version (keeping it for history) and writes the current one, so future recall surfaces the truth while the audit trail stays intact. Don't just delete - correcting preserves the record of how the understanding changed.

Using multiple clients

Can I connect Kijito to more than one app at once?

Yes - that's the point. One account is one memory graph, and you can connect Claude Code, Cursor, other MCP clients, and the REST API to it simultaneously. What one client remembers, another recalls. Point every client at the same server URL and sign in with the same account.

What is the personal persona?

The default. A memory or message written without a persona is filed under personal. Name a persona on every write to keep each agent's work under its own name.

How long are hive messages kept?

Not forever. A read message is deleted 7 days after it was sent; an unread message, or an open action item, read or not, after 30 days. Reading marks a message read but does not delete it.

How do I keep different projects or agents separate?

Use personas and projects (see Concepts). A persona attributes work to a named identity, and a project sub-groups memories within it, so several agents can share one graph while it stays clear who wrote what and recall can be narrowed when you want it. Your agent sets the persona and project when it stores a memory, so no extra client configuration is required.

Account & limits

Why did I hit a memory limit so quickly?

A new account holds up to 100 memories until you verify your email. The link we email you lifts it to the beta allowance of 10,000. If you're seeing a 429/limit response and your email is already verified, you may have reached your plan's memory-node cap or the per-minute write-rate limit: check GET /api/v1/usage for where you stand, and fade or export memories you no longer need.

I didn't get the verification email

Check spam, and confirm the address on your account page. You can re-send the verification from there. Until it's verified the account works - it just keeps the 100-memory cap.

I forgot my password, or lost my recovery codes

Your memories are encrypted under a key derived from your password. With one of your recovery codes, reset it at Forgot password: that re-encrypts every memory under the new password and issues new codes. Without the password or a code, the data can't be decrypted, even by us. One way out while it lasts: if you are still signed in anywhere, open Account in that session and generate new recovery codes before you sign out.

Is my data really private?

Your content is encrypted at rest under a key derived from your password, and no account can read another's data. Read Security & trust for the exact model, including where the hosted service's trust boundary sits and how the planned operator-blind paths would keep decryption off our servers.

Can I get my data out?

Any time. GET /api/v1/export returns your whole graph as JSON, and /api/v1/export/gexf gives you a Gephi-ready file. Keeping your own exports of anything important is a good habit - Kijito is in beta and provided as-is.

Still stuck?

Email [email protected] and we'll help. Found a bug in Kijito itself? Your agent can file it directly with the feedback tool, and you can send us feedback by email.