Troubleshooting
Common errors and how to fix them
Credential errors
| errorCode | Cause | Fix |
|---|---|---|
MISSING_BOT_TOKEN | Neither botToken nor credentialID was supplied. | Set one of the two — see Configuration. |
CREDENTIAL_RESOLVER_NOT_CONFIGURED | credentialID was set but no ICredentialResolver is registered. | Register a credential resolver in DI, or switch to an inline botToken for testing. |
CREDENTIAL_NOT_FOUND | credentialID doesn't match a stored bearer-token credential. | Verify the credential ID and that it was saved as a bearer-token type credential in the vault. |
Common Slack API errors (surfaced via the error output port)
| Slack error | Meaning | Fix |
|---|---|---|
channel_not_found | The channel/channelId value doesn't exist or the bot can't see it. | Double-check the ID/name; for private channels, the bot must be a member. |
not_in_channel | The bot isn't a member of the target channel. | Use channel/join (public channels) or channel/invite the bot manually to a private channel first. |
missing_scope | The bot/user token wasn't granted the OAuth scope this operation needs. | Add the scope in your Slack App's OAuth & Permissions page and reinstall the app to the workspace. See Authentication & Setup. |
invalid_auth / not_authed / account_inactive | The token is malformed, revoked, or belongs to a deactivated user/app. | Regenerate the token from the Slack App's OAuth page and update the vault credential or inline value. |
token_type_error (on search/updateProfile) | A bot token (xoxb-) was supplied where Slack requires a user token (xoxp-). | Use the user OAuth token for message/search and user/updateProfile — see Authentication & Setup. |
is_archived | Attempted to post/act on an archived channel. | Unarchive it first with channel/unarchive, or target a different channel. |
cant_update_message / message_not_found | message/update or message/delete targeted a message the bot didn't post, or an already-deleted message. | Bots can only edit/delete messages they authored — track messageTs from the original send call. |
ratelimited | Slack returned HTTP 429. The node retries automatically up to 3 times honoring Retry-After. | If it still fails after 3 retries, reduce call frequency or batch operations. See Configuration. |
Ephemeral message limitations
Messages sent with
ephemeral: true (or via message/sendEphemeral) cannot later be targeted by message/update, message/delete, message/getPermalink, or channel/getHistory — Slack does not return ephemeral messages from those endpoints. Design workflows so ephemeral messages are a terminal step.
sendAndWait always errors
If message/sendAndWait returns ENGINE_NOT_SUPPORTED, that is expected — the message is sent, but the workflow-suspension half of the feature isn't implemented yet. See Roadmap. Use message/send plus a separate event-driven trigger if you need a request/response pattern today.
File upload timeouts
file/upload allows up to 120 seconds (vs. 30s for other operations) because Base64 payloads for large files take longer to transmit. If uploads still time out, compress the file or split delivery (e.g. upload to cloud storage and post a link with message/send instead).