A command-line tool for working with Slack messages, channels, and cross-tool workflows -- designed for developers who live in the terminal.
slackbuzz brings Slack to your terminal. Read your inbox, reply to messages, manage your status, upload files, and search your workspace without opening a browser.
- Activity inbox -- see mentions, DMs, and threads that need your attention (alias:
inbox) - Message management -- list, send, search, edit, and delete messages in any channel or DM
- File upload & search -- upload files to channels/DMs (multi-file, thread support) and search shared files
- Thread support -- read and reply to threads
- Reactions -- add and remove reactions, see reactions inline in activity views
- Saved items -- save messages for later and manage your bookmarks
- Status management -- set, view, and clear your Slack status from the terminal
- DM conversations -- list and browse direct message conversations
- Slack deeplinks -- clickable links that open items directly in the Slack app
- Emoji rendering -- 1900+ emoji shortcodes rendered as Unicode, plus custom workspace emoji
- @mention resolution --
@namein message bodies auto-resolved to Slack's<@USERID>format, with first-name shorthand for dotted/multi-word names - Shell unescape -- automatically strips shell escape artifacts (e.g.
\!from zsh history expansion) before sending - ClickUp & GitHub enrichment -- auto-detects
CU-task IDs and GitHub PR/issue URLs in messages with actionable hints - AI-friendly -- structured
--jsonoutput and--jqfiltering for AI coding agents (Claude Code, Copilot, Cursor) - JSON output -- all list/view commands support
--json,--jq, and--template - Shell completions -- bash, zsh, fish, and PowerShell
- Secure credentials -- tokens stored in the system keyring with plaintext fallback
- Fuzzy resolution --
@michell→ @michelle,#stand→ #stand-up; "Did you mean: …?" suggestions on miss - Recent context --
slackbuzz dm(no args) shows recently-active DMs;message list/sendrecords targets for default-on-next-invoke - Spec-driven -- 174 Slack methods generated from Slack's OpenAPI spec; manifest auto-derived from method usage so scope drift is structurally impossible
- Self-updating manifest --
slackbuzz app updatepushes the latest scope set to your existing Slack app and walks through reinstall + new tokens
go install github.com/triptechtravel/slackbuzz-cli/cmd/slackbuzz@latestbrew install triptechtravel/tap/slackbuzzDownload a prebuilt binary from the releases page and add it to your PATH.
Create a Slack app with all required scopes:
slackbuzz app createThis creates a Slack app, opens the install page, and prompts you to paste the OAuth tokens. Alternatively, log in with existing tokens:
slackbuzz auth loginIf slackbuzz later gains new scope requirements (e.g. a new method's required scopes weren't in the original manifest), push the latest manifest to your existing app and re-auth in one step:
slackbuzz app updateCheck your Slack inbox:
slackbuzz activitySend a message:
slackbuzz send '#general' "Hello from the terminal!"Upload a file:
slackbuzz file upload report.pdf '#general'Get a teammate from zero to fully operational with one command:
curl -sL https://raw.githubusercontent.com/triptechtravel/slackbuzz-cli/main/scripts/setup.sh | bashThe script installs slackbuzz, sets up the Claude Code skill, and walks through authentication interactively. See the team setup guide for details.
| Command | Description |
|---|---|
slackbuzz activity |
Show mentions, DMs, and threads (alias: inbox) |
slackbuzz activity --dms |
Show direct messages |
slackbuzz activity --threads |
Show threads you're mentioned in |
slackbuzz activity --all --since 1d |
Everything from the last day |
slackbuzz threads |
Show threads you're participating in |
slackbuzz dm list |
List DM conversations with recent activity |
slackbuzz later list |
Show saved/bookmarked messages |
slackbuzz later add <channel> <ts> |
Save a message for later |
slackbuzz later remove <channel> <ts> |
Unsave a message |
| Command | Description |
|---|---|
slackbuzz send <channel|user> "text" |
Send a message (shortcut) |
slackbuzz message list <channel> |
Read channel or thread history |
slackbuzz message send <channel> "text" |
Send a message |
slackbuzz message edit <channel> <ts> "text" |
Edit a message |
slackbuzz message delete <channel> <ts> |
Delete a message |
slackbuzz message search <query> |
Search messages (user token required) |
slackbuzz file upload <file>... <channel> |
Upload files to a channel or DM |
slackbuzz file search <query> |
Search files (user token required) |
slackbuzz react <channel> <ts> :emoji: |
React to a message |
slackbuzz react remove <channel> <ts> :emoji: |
Remove a reaction |
slackbuzz notify <channel> "text" |
Send formatted Block Kit notifications |
slackbuzz thread <channel> <ts> "text" |
Reply to a thread |
| Command | Description |
|---|---|
slackbuzz channel list |
List channels |
slackbuzz channel info <channel> |
Show channel details |
slackbuzz user list |
List workspace members |
slackbuzz user info <user> |
Show user profile |
| Command | Description |
|---|---|
slackbuzz status |
Show your current Slack status |
slackbuzz status set "text" :emoji: |
Set your status |
slackbuzz status set "text" :emoji: --until 2h |
Set status with expiry |
slackbuzz status clear |
Clear your status |
| Command | Description |
|---|---|
slackbuzz app create |
Create a Slack app with all required scopes |
slackbuzz app update |
Push the latest scope manifest to an existing app and re-auth |
slackbuzz auth login |
Authenticate with bot/user tokens |
slackbuzz auth logout |
Remove stored credentials |
slackbuzz auth status |
Show current authentication state |
| Command | Description |
|---|---|
slackbuzz doctor |
Check token health and required scopes |
slackbuzz version |
Print version, commit, and build date |
slackbuzz completion SHELL |
Generate shell completion scripts |
SlackBuzz uses two types of Slack tokens. The CLI automatically selects the correct token for each command — you don't need to specify which to use.
| Token | Prefix | Automatic usage |
|---|---|---|
| Bot token | xoxb- |
Reading channels/users, reactions, system notifications (notify) |
| User token | xoxp- |
Sending messages (as you), search, DMs, saved items, status |
Messages post as the authenticated user by default. Pass --as-bot on message send, edit, or delete to post as the bot app instead. When sending a DM to yourself, the CLI automatically switches to the bot so you receive a notification.
The slackbuzz app create command creates a Slack app pre-configured with all required scopes for both token types. After installing the app to your workspace, paste both tokens when prompted.
Auto-derived. The full scope list is generated from the Slack API methods slackbuzz actually calls — see pkg/cmd/app/manifest.go for the canonical list (regenerated by make manifest-gen). Adding a method to a command flows automatically into the next manifest update; CI's make verify-gen fails the PR if anyone forgets to regenerate.
If a slackbuzz release adds new scope requirements, run slackbuzz app update to push the new manifest to your existing app and re-authenticate in one flow.
The activity view auto-detects ClickUp task IDs (CU-abc123) and GitHub PR/issue URLs in messages and shows actionable hints:
$ slackbuzz activity
@mention alice #engineering 2h ago
Can you review CU-abc123? https://github.com/org/repo/pull/42
-> Open in Slack
-> clickup task view CU-abc123
-> gh pr view 42Generate completion scripts for your shell:
# Bash
source <(slackbuzz completion bash)
# Zsh
source <(slackbuzz completion zsh)
# Or install permanently:
slackbuzz completion zsh > "${fpath[1]}/_slackbuzz"
# Fish
slackbuzz completion fish | source
# PowerShell
slackbuzz completion powershell | Out-String | Invoke-ExpressionFor non-interactive environments, pipe tokens via stdin:
echo "$SLACK_BOT_TOKEN" | slackbuzz auth login --with-tokenAll list and view commands support --json for machine-readable output, and --jq for inline filtering:
slackbuzz activity --json
slackbuzz channel list --json --jq '.[].name'
slackbuzz message list #general --jsonThe CLI is designed to work well with AI agents like Claude Code, GitHub Copilot, and Cursor. An AI agent can read Slack context, send messages, and manage tasks -- all without leaving the terminal.
# AI agent checks what needs attention
slackbuzz activity --json
# AI agent reads messages in a specific channel
slackbuzz message list #engineering --json --limit 10
# AI agent searches for relevant discussions
slackbuzz message search "deployment" --json
# AI agent replies to a thread
slackbuzz thread #engineering 1706000000.000000 "Fix deployed, see PR #42"
# AI agent reacts to acknowledge
slackbuzz react #engineering 1706000000.000000 :white_check_mark:The --json flag on all commands outputs structured data that agents can parse. The activity view includes channel IDs, timestamps, and permalinks that agents can use to take action.
Releases are handled automatically by GitHub Actions using goreleaser. To create a new release:
git tag v0.x.y
git push origin main --tagsThe workflow builds binaries for all platforms, creates a GitHub release, and updates the Homebrew tap. Do not run goreleaser locally — it will conflict with the CI release.
Created by Isaac Rowntree.