Get startedGuidesTroubleshooting

Guide

Troubleshooting

Use symptom, cause, action, and safety guidance when OAuth, MCP discovery, or recall does not behave as expected.

Verify a connection without writing memory

Every troubleshooting path below ends in a verification step. Start with a read: it proves the credential and the transport without changing anything.

curl -s -o /dev/null -w '%{http_code}\n' \
  -H 'X-API-Key: <your-assigned-api-key>' \
  'https://xmemo.dev/v1/memories/search?query=connection%20check&limit=1'

Reading the status code

The status separates a credential problem from an empty memory store.

200 — authorized; an empty results array just means nothing matched.
401 — the credential is missing or not valid.
403 — the credential is valid but lacks the required scope.

Client connection errors

When an AI client or runner cannot reach the MCP server, isolate transport protocol negotiation and host routing before rotating tokens.

  • Verify server health with a direct GET to /health or OPTIONS to /mcp.
  • Check transport compatibility: hosted clients use Streamable HTTP (/mcp); local CLI tools use stdio.
  • Ensure corporate proxies or firewalls permit streaming SSE responses without chunk truncation.
curl -I -s 'https://xmemo.dev/mcp'

Auth failures

Authentication failures distinguish missing credentials (401 Unauthorized) from insufficient permissions or tenant boundary violations (403 Forbidden).

  • OAuth clients: Reconnect via host app and grant memory:read and memory:write.
  • Direct MCP clients: Verify XMEMO_KEY is populated in the process environment without exposing secrets in git.
  • 403 Forbidden: Confirm the token belongs to the active tenant and project scope.
curl -s -o /dev/null -w '%{http_code}\n' \
  -H 'Authorization: Bearer <your-token>' \
  'https://xmemo.dev/v1/memories/search?query=auth%20check&limit=1'

Empty recall results

Recall returning zero results indicates a boundary or query mismatch rather than an engine failure. Reads succeed with 200 OK when no memories match the criteria.

  • Project scope mismatch: Verify the querying agent operates in the same project as the stored memory.
  • Agent instance boundary: Direct clients filtering by XMEMO_AGENT_INSTANCE_ID cannot read memories saved under different instance identifiers.
  • Status check: Verify the memory was committed and has status active, not soft-deleted or superseded.
curl -s -H 'Authorization: Bearer <your-token>' \
  'https://xmemo.dev/v1/memories/search?query=test&limit=5&scope=project:demo'

Write lock timeouts

Concurrent writes from multiple runners or parallel tool executions can trigger write lock contention on shared memory paths.

  • Implement exponential backoff with randomized jitter when write requests return lock contention.
  • Supply a client-side idempotency key on write retries to prevent duplicate memory entries.
  • Serialize memory mutations for high-frequency workflows using task queues or batch APIs.
curl -s -X POST 'https://xmemo.dev/v1/memories' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: <generate-a-uuid-v4>' \
  -d '{"content":"Durable convention fact","path":"projects/demo/conventions"}'

FAQ / Troubleshooting

Start with the answers for AI assistant users, then use the developer and integrator answers for connection and operations details. Every answer includes an action step and a safety boundary.

For AI assistant users

Everyday answers for people who use XMemo through an AI assistant without configuring the connection themselves.

  1. Why does my AI assistant not remember something I told it earlier?

    Symptom
    I saved an important preference or detail, but in a later chat my AI assistant acts as if it has never seen it.
    Cause
    The assistant may be connected to a different XMemo account, project, or device context, or the original memory was not saved.
    Action:
    Ask the assistant to save a small, non-sensitive test detail, then open Memory Console and check that it appears under the account and project you use.
    Verification
    Start a fresh chat with the same assistant and ask about the test detail; remove the test entry when finished.
    Safety:
    Use a made-up test detail; do not use another person's private information.
  2. Why is my AI assistant mixing up my projects or conversations?

    Symptom
    A detail from one project shows up in another, or the assistant answers as though two conversations belong together.
    Cause
    The assistant may be using a different project or account context than the one where the memory was saved.
    Action:
    In the assistant, choose the intended XMemo account and project, reconnect it if needed, and retry with a clearly labeled test detail.
    Verification
    Check the memory's project and source in Memory Console, then confirm an unrelated project cannot see that test detail.
    Safety:
    Do not move private information between projects just to make it appear.
  3. How can I make my AI assistant forget something completely?

    Symptom
    I want one memory removed and need to know whether it is gone.
    Cause
    Viewing, recoverably removing, permanently deleting, and exporting memory are different account actions.
    Action:
    Open Memory Console, find the memory, and use its delete or forget control; if you cannot find the control, contact Support with the memory reference.
    Verification
    Search for the memory again and confirm the state shown by Memory Console; check that any export contains only your account's data.
    Safety:
    Delete only the intended memory and never include private content in a support message.
  4. I changed computers or AI assistants; will XMemo still remember me?

    Symptom
    My old memories seem split from new ones after I changed devices, restarted an assistant, or switched hosts.
    Cause
    The new assistant connection may identify the device or assistant as a new source, or it may be signed into a different account.
    Action:
    Reconnect XMemo in the assistant you want to use, sign into the same account, and keep the connection's device label stable when the app offers that option.
    Verification
    Save one made-up test detail, start a new chat on the same assistant, and confirm the detail appears without changing the account.
    Safety:
    Check the account before saving anything personal on a shared computer.
  5. Why did my AI assistant save the same thing twice?

    Symptom
    I see two copies of what looks like the same memory after a retry or reconnect.
    Cause
    The first save may have succeeded even though the assistant did not show the result, so repeating the request created another copy.
    Action:
    Open Memory Console, compare the two entries, and remove only the duplicate after confirming their dates and source.
    Verification
    Ask the assistant to save one new, clearly labeled test detail once and confirm that only one new entry appears.
    Safety:
    Do not delete all matching memories until you identify the copy you want to keep.
  6. Why is my AI assistant giving me too much or too little of my past context?

    Symptom
    The assistant brings up unrelated details, misses the decision I need, or gives an answer that feels overloaded.
    Cause
    The request covers too broad a topic or time period, or the assistant is trying to use more saved context than the conversation needs.
    Action:
    Ask for a narrower topic, project, or time period, and tell the assistant which decision or detail matters most.
    Verification
    Compare the answer with the requested topic and remove any unrelated details from the conversation before continuing.
    Safety:
    Do not ask the assistant to reveal unrelated private memories just to fill the conversation.
  7. I disconnected XMemo; how do I make sure the old assistant cannot use it?

    Symptom
    I removed the connection from an assistant, but I am unsure whether it can still access my memories.
    Cause
    Removing a connection from the app may not cancel the account's connection permission.
    Action:
    Open your XMemo account's connected-app or security controls, revoke the old assistant connection, and reconnect only the one you trust.
    Verification
    Try the old connection only if it is safe to do so, and confirm that it is refused before using the new connection.
    Safety:
    Revoke only the connection you intend to remove and do not share account sign-in details.
  8. Why cannot my AI assistant use XMemo anymore?

    Symptom
    XMemo used to be available in my assistant, but its memory actions no longer appear or the assistant says it cannot use them.
    Cause
    The assistant may need its XMemo connection refreshed, or it may be signed into a different account.
    Action:
    Open the assistant's connected-app settings, disconnect and reconnect XMemo, then start a new chat.
    Verification
    Ask the assistant to show whether XMemo is connected, then try a harmless read before saving anything.
    Safety:
    Never paste secret account details or private memories into a chat or support request.
  9. Which XMemo connection should I use in my AI assistant?

    Symptom
    I am unsure which XMemo page or connection belongs in my assistant's settings.
    Cause
    The guided setup page and the assistant connection serve different purposes, and hosted and self-managed setups have different boundaries.
    Action:
    For the hosted service, start at https://xmemo.dev/product/docs and follow the connection link shown for your assistant; ask Support if your organization gave you a different setup page.
    Verification
    Before saving a personal detail, confirm the page uses your intended XMemo account and hosted service.
    Safety:
    Do not use local development addresses or paste private credentials into a public chat.
  10. What should I do if my AI assistant still cannot connect to XMemo?

    Symptom
    I retried the connection steps, but the assistant still cannot use XMemo.
    Cause
    The problem may belong to the assistant app, my account, or a stale connection that public instructions cannot inspect.
    Action:
    Contact Support with the assistant name, approximate time, and a short description of what you saw; include only redacted details.
    Verification
    Make sure the report can be reproduced without sending private memories or account secrets.
    Safety:
    Never send sign-in details, one-time codes, cookies, or private memory text.

For developers & integrators

Connection, account-boundary, client, and operational answers for people integrating XMemo.

  1. OAuth failed or the consent window never completes.

    Symptom
    The client shows 401, the OAuth browser does not open, or consent returns to the client without a usable connection.
    Cause
    The hosted grant may be stale, the browser handoff may be blocked, or the client may be using an old server registration.
    Action:
    Sign out of the XMemo MCP server in the host app, reconnect the hosted MCP URL, and approve memory:read plus memory:write again.
    Verification
    Reconnect until the client reports an active authorization, then run a harmless recall before writing memory.
    Safety:
    Do not switch to XMEMO_KEY inside OAuth clients just to bypass a stale OAuth session.
  2. The request returns 403 Forbidden.

    Symptom
    The server is reachable and the credential is recognized, but the requested project, tool, or memory action is refused.
    Cause
    The grant lacks the required scope, the account is outside the selected project boundary, or the resource belongs to another tenant.
    Action:
    Check the selected account and project, reconnect OAuth or request the intended scope, then retry the same operation without changing the resource.
    Verification
    Confirm that a read-only request in the intended project succeeds before retrying a write or delete operation.
    Safety:
    Do not broaden scopes or copy a different user's token to make a 403 disappear.
  3. The MCP server connects but no tools appear.

    Symptom
    The host shows a connected server, but tools/list is empty or the XMemo tools are missing from the model's tool picker.
    Cause
    The client has not refreshed discovery, is using the wrong MCP profile, or is connected to a stale URL or registration.
    Action:
    Reconnect the server, verify the client is using the supported MCP profile, and run tool discovery again before changing credentials.
    Verification
    Confirm that at least remember, recall, and search_memory appear before starting a write or marketplace demonstration.
    Safety:
    Do not paste bearer tokens into screenshots, support tickets, or marketplace review notes.
  4. A direct MCP client says the token is missing.

    Symptom
    A direct client reports that XMEMO_KEY is unset, empty, or unavailable even though the variable was added somewhere on the machine.
    Cause
    The client process did not inherit the environment, the variable was added to a different shell, or the config expects a secret-store reference instead.
    Action:
    Set XMEMO_KEY in the local environment or secret store, restart the client, and keep XMEMO_AGENT_INSTANCE_ID stable when attribution matters.
    Verification
    Inspect only the variable's presence metadata, restart the client, and confirm a harmless authenticated recall; never print the token value.
    Safety:
    Keep the real token outside config files committed to git; public examples should reference environment variables only.
  5. The agent instance ID changes after every restart.

    Symptom
    The same local runner appears as several agents or recalls split across instances after a restart or redeploy.
    Cause
    XMEMO_AGENT_INSTANCE_ID is generated at process start instead of persisted in the runner's local secret or environment configuration.
    Action:
    Generate one non-secret instance label per runner, persist it outside git, and send it with every direct MCP connection.
    Verification
    Restart the runner twice and confirm the same instance label appears in source attribution without exposing credentials.
    Safety:
    The instance label is attribution metadata, not an authorization credential; account and token boundaries still control access.
  6. Recall returns empty memory.

    Symptom
    A recall or search succeeds but returns no relevant records after the user has saved context.
    Cause
    The read is using a different account, project, scope, agent boundary, or memory type than the write, or the test record was never committed.
    Action:
    Create a synthetic test memory, verify the path and memory type in Memory Console, then retry recall from the same account or tenant boundary.
    Verification
    Read the newly created synthetic record back with the same project and scope, then remove it through the intended delete path.
    Safety:
    Use synthetic review data; do not use private customer memory as a marketplace demo.
  7. Recall or write uses the wrong project scope.

    Symptom
    A record is visible in one project but not another, or a write appears under a project the operator did not intend.
    Cause
    The client reused a project identifier from another environment, omitted the project boundary, or retained a stale account session.
    Action:
    Select the intended account and project explicitly, refresh the client context, and repeat the operation with a synthetic record.
    Verification
    Confirm the record's project and source attribution in Memory Console, then verify that an unrelated project cannot read it.
    Safety:
    Never solve a scope mismatch by granting a broader token or copying data between projects.
  8. The same memory is saved twice.

    Symptom
    A retry or reconnect produces duplicate records instead of one durable memory.
    Cause
    The client retried after a timeout without an idempotency boundary, or the capture flow writes before confirming the first response.
    Action:
    Inspect the existing record and source attribution first, then use the client retry policy or a stable idempotency key before writing again.
    Verification
    Repeat the same controlled capture once and confirm one new record plus one readback, not two new records.
    Safety:
    Do not bulk-delete matching memories until the intended record and account scope have been confirmed.
  9. Recall context is too large or too small.

    Symptom
    The agent receives irrelevant context, misses the needed decision, or exceeds the host's useful context budget.
    Cause
    The query is too broad, the scope or time window is missing, or the caller requested an unsuitable result limit for the task.
    Action:
    Narrow the query with project, agent, time, or topic boundaries and request a small relevant set before expanding the limit.
    Verification
    Compare the returned context against the target question and confirm that every included record is authorized and useful.
    Safety:
    Do not widen scope or export unrelated memory just to fill a context window.
  10. How do I delete or export memory?

    Symptom
    The operator needs to remove a record, confirm a forget action, or obtain an account-scoped export.
    Cause
    Delete, recoverable forget, permanent delete, and export are distinct workflows with different confirmation and recovery semantics.
    Action:
    Use Memory Console or account workflows first; if a self-service path is unavailable, contact Support so the request stays account-scoped.
    Verification
    After forget or delete, search by the record reference and confirm the expected recoverable or permanent state; verify exports contain only the account scope.
    Safety:
    Exports and support bundles must exclude token hashes, API keys, session secrets, provider credentials, and unrelated tenant data.
  11. How do I revoke access after a client is disconnected?

    Symptom
    A client was removed locally, but the operator needs to invalidate its OAuth grant or direct credential.
    Cause
    Disconnecting a client config does not necessarily revoke the server-side grant or rotate a direct token.
    Action:
    Open account security or connected-client controls, revoke the named OAuth grant, and rotate the direct credential if one was exposed or no longer trusted.
    Verification
    Retry an authenticated read with the old connection and confirm it is rejected, then reconnect only through the intended consent or secret-store path.
    Safety:
    Revoke only the intended client or grant; do not publish old tokens, OAuth codes, or session details while diagnosing access.
  12. Is XMemo GA, certified, or marketplace listed?

    Symptom
    A listing or document asks whether a working configuration proves GA, certification, or marketplace approval.
    Cause
    Configuration support, OAuth readiness, pilot evidence, and marketplace approval are separate claims.
    Action:
    Treat public wording as beta/config-supported unless a specific marketplace approval or certification artifact is present.
    Verification
    Check the canonical client capability matrix and the named approval artifact before publishing a status claim.
    Safety:
    Do not claim GA, certified, stable, or listed status from a working config alone.
  13. Which URL should I use?

    Symptom
    A hosted user is unsure whether to follow the public quickstart, MCP endpoint, or self-hosted developer instructions.
    Cause
    Hosted onboarding and self-hosted or legacy deployment paths have different URLs, credentials, and data boundaries.
    Action:
    Hosted users should start with https://xmemo.dev/mcp for MCP clients and https://xmemo.dev/product/docs for guided setup.
    Verification
    Confirm that the host URL, authentication mode, and account boundary match the intended hosted or self-hosted deployment before connecting.
    Safety:
    Do not use localhost, Supabase, Docker, or self-hosted Python instructions as the first path for public hosted users.
  14. Memory appears under the wrong agent or device.

    Symptom
    A memory is attributed to another runner or appears split across devices after a client update or restart.
    Cause
    The client changed its non-secret agent or instance headers, or a shared credential is being used by multiple runners.
    Action:
    Check the non-secret agent/device headers or client profile, then persist the local instance ID instead of regenerating it.
    Verification
    Write one synthetic record from the intended runner and confirm its source attribution remains stable after reconnect.
    Safety:
    Attribution labels help review source, but they are not a security boundary; account credentials still decide access.
  15. I still cannot connect after following the steps.

    Symptom
    The connection remains unavailable after the client-specific OAuth or direct-secret path has been retried.
    Cause
    The remaining issue may be client-specific, account-specific, or caused by a stale registration or environment boundary that local docs cannot inspect.
    Action:
    Open Support with the client name, config path, approximate timestamp, and whether the client uses OAuth or XMEMO_KEY.
    Verification
    Confirm that the support report contains a reproducible symptom and redacted metadata, then wait for the account-scoped diagnosis.
    Safety:
    Share redacted diagnostics only; never send bearer tokens, OAuth codes, cookies, or customer memory content.

Source: FAQ / Troubleshooting