Troubleshooting

  • Unstyled widget. Import @bootstrapware/comments/styles.css. The root class is bsw-cm.
  • Sign in to join the discussion. user.id is missing. Pass the session user. Do not invent an id.
  • This discussion needs an author token from your server. Live keys always need a token. Test needs one when requireAuthorToken is true. Mint it in a Route Handler. See Next.js.
  • You do not have access to this resource. The token is malformed, expired, or aid does not match user.id. Renew from the server. A permission miss on a write is HTTP 403 forbidden with that same message.
  • The requested resource was not found. The token matches the key but names another app, tenant, resource type, or resource id, or the id is unknown. Do not treat that 404 as proof the row exists in another tenant.
  • This discussion changed. Reload to continue. HTTP 409 stale_version. Keep the draft and reload. thread_resolved means reopen before replying. idempotency_payload_mismatch means the same operationId was reused with a different body. resource_frozen means purge has started.
  • 1 GiB cap. HTTP 403 quota_exceeded. Reads, export, delete, resolve, and mark-read still work. Shrink or delete text to free bytes. Test and live meters are separate.
  • Live config 403. Live Comments configuration requires an active Comments BYO ($9.99) or Hosted ($19.99) subscription. Test keys work unpaid.
  • Hosted write 403 on a paid BYO plan. Hosted Comments storage requires an active Comments Hosted ($19.99) subscription.
  • 429 rate_limited. Content writes are 30 per minute per workspace and author. There is no Retry-After header. The composer text stays.
  • Saved discussions could not be read. Local JSON was malformed. The widget shows an empty in-memory discussion and names that fallback.
  • MCP tool missing. Call list_comment_capabilities. Tool names use the comment_ infix. Live keys, webhooks, export, and purge are dashboard-only.

Related: Troubleshooting guide · Limits · Identity and tokens