This Raycast extension is the perfect companion for Slack users. It allows you to:
The Set Status command accepts two optional arguments, statusText and emoji, so you can build a deep link (or a Quicklink) that sets your status in one step:
raycast://extensions/mommertf/slack/set-status?arguments=%7B%22statusText%22%3A%22Lunch%22%2C%22emoji%22%3A%22%3Ahamburger%3A%22%7D
The arguments query parameter is a URL-encoded JSON object, for example:
{ "statusText": "Lunch", "emoji": ":hamburger:" }
emoji accepts a Slack emoji name with or without colons (hamburger or :hamburger:).Statuses set this way don't auto-expire. To pick an expiration, open the command and use the Set New Status form.
If you don't want to log in through OAuth, you can use an access token instead. Here's how to get one:
Click Button Create New App
Select From an app manifest
Select a workspace to which you want to grant the extension access.
Copy and paste the following manifest (Select YAML):
Feel free to exclude permission scope groups - see comments - if you don't want to have the full experience of this extension.
display_information:
name: Raycast - Slack
oauth_config:
scopes:
user:
# Command: Search & Unread Messages & Set Presence
- users:read
# Command: Search & Unread Messages
- channels:read
- groups:read
- im:read
- mpim:read
# Command: Search
- search:read
# Command: Unread Messages
- channels:history
- groups:history
- im:history
- mpim:history
# Command: Unread Messages (optional - needed for marking conversations as read)
- channels:write
- groups:write
# Command: Unread Messages (optional - needed for marking conversations as read)
# AI Tool: Send Message (needed to open a DM from a user ID)
- im:write
- mpim:write
# Command: Set Presence
- users:write
# Command: Set Snooze
- dnd:read
- dnd:write
# Command & AI Tool: Send Message
- chat:write
# AI Tool: Upload Files
- files:write
# AI Tool: Download Files
# Command: Search Messages (Download Attachment)
- files:read
# Command: Search Emojis
- emoji:read
# AI Tool: Add Reaction
- reactions:write
# Command: Set Status
- users.profile:write
- users.profile:read
settings:
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
Confirm creation of app
Press Install to Workspace
Get your personal access token from Features -> OAuth & Permissions (section OAuth Tokens for Your Workspace).
Your personal access token will start with xoxp-.
If you are behind a corporate proxy, you can configure the extension to route Slack API requests through it.
The proxy URL is resolved in the following order:
http://proxy.example.com:8080)HTTPS_PROXY environment variableHTTP_PROXY environment variableSlack applies Web API rate limits per API method, per workspace, per app, using one-minute windows. The published tier number is a guaranteed floor rather than a fixed maximum; Slack allows some bursts and may change the exact allowance. Signing in again or clearing Raycast's extension cache does not reset these workspace-level app limits.
The limits most relevant to this extension are:
| Extension operation | Slack method | Published limit |
|---|---|---|
| Search workspace members | users.list | Tier 2: 20+ requests per minute |
| Search channels and group conversations | conversations.list | Tier 2: 20+ requests per minute |
| Search messages | search.messages | Tier 2: 20+ requests per minute |
| Send messages | chat.postMessage | Special: generally 1 message per second per channel, plus a workspace-wide limit |
users.list and conversations.list are cursor-paginated, and every page is another request against that method's rate limit. Normal directory loading uses Slack's recommended 200-item page size. A focused directory search can request up to 999 items per transient page (Slack requires the value to remain below 1,000), immediately discarding the full API page after retaining only compact matches. This reduces request pressure in very large workspaces without rebuilding the previous unbounded in-memory directory.
When a limit is exceeded, Slack responds with HTTP 429 and a Retry-After header containing the number of seconds to wait. The extension shows that delay in Raycast, pauses the affected Slack API request, and retries it automatically. Although Slack applies limits per method, the Slack SDK pauses this client’s request queue during the retry delay. See Slack's rate-limit overview for the full tier definitions and current policy.