Slack API · error code

Slack error no_permission: Token lacks permission in this context

ConfigurationHTTP 200Scopes, permissions & admin policy

Last verified against Slack API reference - chat.postMessage errors

What Slack returns
The workspace token used in this request does not have the permissions necessary to complete the request. Make sure your app is a member of the conversation it's attempting to post a message to.

What error no_permission means

The token cleared authentication, but it is not permitted to do this particular thing in this particular place. Slack's own description on chat.postMessage points at the most common concrete case: "Make sure your app is a member of the conversation it's attempting to post a message to." Where missing_scope is about what the token was granted at install, no_permission is about what the token's identity is allowed to do in context — and context usually means channel membership.

The overlap with not_in_channel confuses people: both can appear when a bot posts into a channel it has not joined, with the exact string depending on token type and method. The remediation is the same. For public channels, either invite the bot (/invite @botname) or grant the chat:write.public scope, which lets a bot post to public channels without joining (posting only — reading history still requires membership). For private channels there is no scope shortcut: a member must invite the bot, full stop.

If membership checks out, look at the token's nature. Legacy workspace tokens and certain admin-flavored tokens carry permission models of their own, and calling a method outside that model lands here rather than at missing_scope. When an admin-level method returns no_permission, verify the calling user actually holds the admin role the method requires.

What it looks like

{"ok": false, "error": "no_permission"}

Why it happens

  • The bot is not a member of the conversation it is posting to, and chat:write.public is not granted (or the channel is private).
  • The method requires an admin or owner identity that the token's user does not have.
  • A legacy or workspace-token permission model does not cover the called method.
  • The message targets a Slack Connect or shared channel where the app's side lacks posting rights.

How to fix Slack error no_permission

  1. 1Invite the bot to the channel with /invite @botname, or for public channels add the chat:write.public scope and reinstall.
  2. 2For private channels, have an existing member invite the bot; no scope can substitute for membership.
  3. 3Confirm the conversation ID is the one you think it is with conversations.info from the same token.
  4. 4For admin methods, check the token's user holds the required role in that workspace.
  5. 5Retry after the membership or role change; the error is deterministic until the context changes.

How to stop it recurring

Make channel membership part of provisioning: when your app is configured to post somewhere, join public channels programmatically via conversations.join (bot tokens with channels:join) and instruct humans to invite the bot to private ones. Grant chat:write.public if broadcast-to-public-channels is a core behavior, and document which channels the bot genuinely inhabits. See also Slack API limits for per-channel posting ceilings once membership works.

Official reference: Slack API reference - chat.postMessage errors. See all Slack error codes or the Slack limits and quotas.

Related codes

Error no_permission - quick answers

What does Slack error no_permission mean?

The token cleared authentication, but it is not permitted to do this particular thing in this particular place.

How do I fix Slack error no_permission?

1. Invite the bot to the channel with /invite @botname, or for public channels add the chat:write.public scope and reinstall. 2. For private channels, have an existing member invite the bot; no scope can substitute for membership. 3. Confirm the conversation ID is the one you think it is with conversations.info from the same token. 4. For admin methods, check the token's user holds the required role in that workspace. 5. Retry after the membership or role change; the error…

Stop debugging Slack by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.