showcase/shell-docs/src/content/docs/troubleshooting/common-issues.mdx
Welcome to the CopilotKit troubleshooting guide. This page covers the most common issues you'll hit while wiring up a Built-in Agent, plus the usual fixes.
<Callout type="info"> Have an issue not listed here? Open a ticket on [GitHub](https://github.com/CopilotKit/CopilotKit/issues) or reach out on [Discord](https://discord.com/invite/6dffbvGU3D) and we'll help. PRs adding your own troubleshooting notes are very welcome. </Callout>If you're getting network or API errors, here's how to troubleshoot.
<Accordions> <Accordion title="Check your endpoint configuration"> Verify your `runtimeUrl` in `CopilotKit`:<CopilotKit runtimeUrl="/api/copilotkit">
</CopilotKit>
Or, if you're using CopilotCloud:
<CopilotKit publicApiKey="<your-copilot-cloud-public-api-key>">
</CopilotKit>
Common issues:
runtimeUrl. Omit runtimeUrl and keep only publicApiKey
</Accordion>
# If this doesn't work:
http://localhost:3000/api/copilotkit
# Try this instead:
http://127.0.0.1:3000/api/copilotkit
Usually caused by local DNS / /etc/hosts issues.
</Accordion>
Revisit the quickstart if you want to double-check your setup. </Accordion> </Accordions>
If you're getting a "CopilotKit's Remote Endpoint not found" error, the /info endpoint isn't reachable from the runtime.
You should see a 200 OK and a JSON body like:
{
"actions": [],
"agents": [
{ "name": "my_agent", "description": "A helpful agent.", "type": "langgraph_agui" }
],
"sdkVersion": "0.1.32"
}
If you see a different response, check your server logs. </Accordion> </Accordions>
If the tunnel creation process spins indefinitely, your router or ISP might be blocking the tunnel service.
<Accordions> <Accordion title="Router / ISP blocking tunnel connections"> Verify connectivity:ping tunnels.devcopilotkit.com
curl -I https://tunnels.devcopilotkit.com
telnet tunnels.devcopilotkit.com 443
If any of these fail:
Usually one of:
prompt is empty and the user message gives it nothing useful to do. Give the agent a system prompt.tool_handler_failed code.description to include the trigger phrase.useCopilotAction split into useFrontendTool, useComponent, and useHumanInTheLoop. Make sure you're using the right one.If you self-host the runtime and see a 404 from POST /agent/:agentId/connect
right after the page loads, before any message is sent, it's almost always one
of two things:
{ "error": "Agent not found", "message": "Agent 'default' does not exist" }
The prebuilt components connect to the agent named "default" unless you pass an
explicit agentId. Register one under that key:
new CopilotRuntime({ agents: { default: myAgent } });
Confirm the agent shows up by hitting GET {runtimeUrl}/info
directly. See also the error reference.
</Accordion>
The built-in InMemoryAgentRunner handles the common
cases, but a custom runner backed by an external memory layer must handle the
"unknown thread" path explicitly. Return an empty RUN_STARTED,
MESSAGES_SNAPSHOT, RUN_FINISHED sequence instead of failing. The
AWS AgentCore integration shows the exact pattern.
</Accordion>
</Accordions>