If the copilot doesn’t arm itself when you expected it to, check in this order:
- The widget’s boot response: it always carries a
copilotblock withenabled,mode,manifestStatus,needManifestand, if applicable,reason. It’s the source of truth — never guess from what’s on screen. - Is the copilot turned on for that channel instance (the Platform → Channels → Copilot)?
- Does the fingerprint match? Compare it in the channel’s “Copilot” section against what your SDK is computing locally.
- Does your
allowedWidgetOriginsreally include the origin your widget loads from? - The conversation’s timeline (inbox): every plan proposed, delivered, completed, cancelled or failed gets logged there — useful for seeing what happened with a specific plan without access to the server’s technical logs.
