Back to Blog
Tutorial

brew install slack: Install the Slack App or the Slack CLI with Homebrew

brew install slack installs the Slack desktop app; Homebrew finds the cask without --cask. Update, beta and uninstall commands, plus brew install --cask slack-cli for Slack's developer CLI, with brew output from 2 November 2026.

Slack Green Team
September 24, 2026
November 2, 2026
8 min read
Share:
slack cli
homebrew
developer tools
command line
mac
linux

brew install slack installs the Slack desktop app, the same app you would download from slack.com. Homebrew finds the slack cask by itself, so you do not need the --cask flag: on 2 November 2026 brew install --dry-run slack answered "Would install 1 cask: slack". If you want Slack's developer command line tool instead, run brew install --cask slack-cli, which adds a slack command and no chat app. That CLI builds Slack apps. It does not send messages as you, read your channels or set your status. If that is what you want, the tools for it are further down, including sg-cli from Slack Green, which keeps your Slack status active from a terminal or a small server.

brew install slack: the Slack desktop app

brew install slack          # same as brew install --cask slack
open -a Slack

This is what Homebrew 7.0.10 printed on this Mac on 2 November 2026:

$ brew install --dry-run slack
==> Would install 1 cask:
slack

$ brew info --cask slack
==> slack (Slack): 4.52.182 (auto_updates)
Team communication and collaboration software
https://slack.com/
==> Requirements
Required: macOS
==> Artifacts
Slack.app (App)
==> Analytics
install: 6,889 (30 days), 17,967 (90 days), 83,819 (365 days)

The cask downloads Slack's own disk image from downloads.slack-edge.com (the Apple silicon build on an M-series Mac) and puts Slack.app in /Applications. It is a macOS-only cask. On Linux, Homebrew has no Slack desktop app; use the .deb, .rpm or Snap package from slack.com.

The (auto_updates) tag matters after the install. Slack updates itself, so a plain brew upgrade skips it and Homebrew's record of the version can fall behind the app. These are the commands for the rest of the app's life:

brew upgrade --cask --greedy slack   # force Homebrew to update it anyway
brew install --cask slack@beta       # Slack's beta channel (4.53.269 on 2 Nov), needs macOS 13 or later
brew uninstall --cask slack          # quits Slack and removes /Applications/Slack.app
brew uninstall --zap --cask slack    # also deletes ~/Library/Application Support/Slack, caches, cookies and logs

--zap signs you out of every workspace on that Mac, because the saved logins live in ~/Library/Application Support/Slack. The cask's zap list has 15 paths, each named after Slack or its bundle id com.tinyspeck.slackmacgap; brew info --json=v2 --cask slack prints them.

If Slack.app came from slack.com or the App Store, brew info --cask slack says "Not installed" even though the app is there, because Homebrew did not install it. That was the case on this Mac.

Install the Slack CLI with Homebrew

brew install --cask slack-cli
slack version

The cask downloads Slack's own build from downloads.slack-edge.com and links it as $HOMEBREW_PREFIX/bin/slack. That is /opt/homebrew/bin/slack on Apple silicon and /usr/local/bin/slack on Intel Macs. Here is what brew info reported on 2 November 2026 (Homebrew 7.0.10):

$ brew info --cask slack-cli
==> slack-cli (Slack CLI): 4.11.0
CLI to create, run, and deploy Slack apps
https://docs.slack.dev/tools/slack-cli/
==> Artifacts
bin/slack (Binary)
==> Analytics
install: 704 (30 days), 1,909 (90 days), 6,975 (365 days)

The version moved from 4.8.0 on 4 October to 4.9.0 on 9 October and 4.11.0 on 2 November.

Update and remove it the Homebrew way:

brew upgrade --cask slack-cli              # move to the newest version
brew uninstall --cask slack-cli            # remove the binary
brew uninstall --zap --cask slack-cli      # also delete ~/.slack (saved logins)

Slack's docs also offer a script install, curl -fsSL https://downloads.slack-edge.com/slack-cli/install.sh | bash. It installs the same binary. Pick one. With both, you get two slack commands, and the one earlier in your PATH wins.

The Slack tools in Homebrew, and which one you want

brew search slack returns several packages that sound alike. They do different jobs.

PackageCommandWhat it doesInstalls, 30 days
slack (cask, 4.52.182)noneThe Slack desktop app, not a CLI6,889
slackdump (4.5.2)slackdumpExport messages and files without admin rights753
slack-cli (cask, 4.11.0)slackSlack's official CLI: create, run and deploy Slack apps704
slack@beta (cask, 4.53.269)noneThe desktop app's beta channel21
slack-mcp-server (1.3.0)slack-mcp-serverLets AI assistants read and post in Slack over MCP11
slackcat (1.7.3)slackcatPost a file or command output to a channel11

Counts are from brew info on 2 November 2026. The desktop app is installed about ten times as often as the official CLI (on 4 October the counts were 3,347 and 365), which is why most people who type brew install slack want the app.

The Slack CLI builds apps and has no command that keeps you active, and a script on your laptop stops when the laptop sleeps. A server-side tool keeps your Slack dot green with no input, even while the laptop sleeps or the lid is closed.

First commands after the install

slack login          # prints a /slackauthticket command to paste into Slack
slack create my-app  # start a new app from a template
cd my-app
slack run            # run the app locally against your workspace
slack deploy         # deploy to Slack's hosting

slack login does not ask for a password. It prints a /slackauthticket command. You paste that into any Slack message box, Slack shows a challenge code, and you paste the code back into the terminal. Repeat it for each workspace. slack auth list shows the workspaces you are signed in to.

slack create asks you to pick a template. Bolt for JavaScript and Bolt for Python apps run on your own machine or server. Bolt for JavaScript 5 needs Node 20 or later, and on Node 20 it also needs undici 7, as our upgrade test found. Deno Slack SDK apps can run on Slack's own hosting through slack deploy. slack doctor prints your CLI version, your runtimes and your login state, which is the first thing to check when something fails.

Fix common Slack CLI install errors

zsh: command not found: slack. Homebrew's bin folder is not on your PATH. Check with brew --prefix, then add it:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
source ~/.zprofile
which slack

On Intel Macs the path is /usr/local/bin/brew. On Linux it is usually /home/linuxbrew/.linuxbrew/bin/brew.

slack opens the wrong program. Another tool also installed a command named slack. Run which -a slack to see every copy in order. With the curl installer you can pick a different name for Slack's binary, as Slack's install guide shows. The cask always installs it as slack.

brew install slack-cli says no formula found. You left out --cask on an old Homebrew. Homebrew 6 resolves slack-cli to the cask on its own; older versions need the flag, or brew update first.

Linux on ARM. The cask ships a 64-bit Intel and AMD build for Linux only. On an ARM board or an ARM cloud server, use Slack's curl installer.

Send a Slack message from the command line

The official CLI has no "send message" command. For that you call Slack's Web API or a webhook, which needs no install beyond curl.

With an incoming webhook, which you create in a Slack app under Incoming Webhooks, one channel is fixed per URL:

curl -X POST -H 'Content-type: application/json' \
  --data '{"text":"Build finished on main"}' \
  "$SLACK_WEBHOOK_URL"

With a bot token and chat.postMessage, you can post to any channel the bot is in:

curl -X POST https://slack.com/api/chat.postMessage \
  -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
  -H "Content-type: application/json; charset=utf-8" \
  --data '{"channel":"C0123456789","text":"Deploy done"}'

The bot posts as the app, not as you. Which token to use for what is in Slack bot tokens. If you want to pipe output into a channel, brew install slackcat gives you a small tool for that. To pull messages out instead, slackdump exports channels and DMs, and the steps are in how to export Slack messages without admin.

Set your Slack status from the terminal

Your status text and emoji go through users.profile.set with a user token (xoxp), not a bot token:

curl -X POST https://slack.com/api/users.profile.set \
  -H "Authorization: Bearer $SLACK_USER_TOKEN" \
  -H "Content-type: application/json; charset=utf-8" \
  --data '{"profile":{"status_text":"Deep work","status_emoji":":headphones:","status_expiration":0}}'

Scopes, expiry times and errors are in set Slack status with the API. The green dot is a separate thing. The API's users.setPresence accepts only auto and away, so no API call can force you active. The reasons are in the Slack presence API.

Keep your Slack status active from a terminal: sg-cli

sg-cli is our self-hosted presence CLI. It runs a small background process on your Mac, your Linux machine or a $5 server, and keeps your Slack presence active on the schedule you set. Your session tokens stay encrypted in ~/.sg-cli/ on that machine. Our server only checks the license. It is a one-time $78.99.

There is no Homebrew formula for sg-cli yet. The install is one command on macOS or Linux, and it needs Python 3.11 or newer:

curl -fsSL https://slack.green/install.sh | bash
sg-cli               # opens the terminal dashboard: add a workspace, set hours

The script installs sg-cli into its own Python environment in ~/.sg-cli/venv. Run it again to update. Native Windows is not supported; use WSL. The full setup is in the CLI setup guide, and how it compares with the hosted version is in the self-hosted CLI. Why a home-made script cannot do the same job is in scripts that keep Slack active.

Frequently asked questions

Is there a Homebrew formula for the Slack CLI? It is a cask: brew install --cask slack-cli. brew install slack-cli without --cask also works on current Homebrew, which finds the cask by name.

What is the difference between brew install slack and brew install slack-cli? slack is the desktop chat app. slack-cli is the developer command line tool, and its command is also called slack.

Why does brew upgrade not update Slack? The slack cask is marked auto_updates, so Homebrew leaves updates to Slack's own updater. Run brew upgrade --cask --greedy slack to make Homebrew do it.

Can the Slack CLI send messages? No. It creates, runs and deploys apps. Send messages with a webhook or chat.postMessage through curl, as shown above, or with slackcat.

Does the Slack CLI work on Linux? Yes. The Homebrew cask supports 64-bit Intel and AMD Linux. For ARM Linux, use Slack's curl installer.

How do I update the Slack CLI? brew upgrade --cask slack-cli. If you used the curl installer, run it again.

Summary

brew install slack installs the Slack desktop app, and brew upgrade --cask --greedy slack updates it. brew install --cask slack-cli installs Slack's official slack command, which builds, runs and deploys Slack apps. To send a message from a terminal, use a webhook or chat.postMessage with curl. To set your status, use users.profile.set. To keep your status active on a schedule from a terminal or a server, use sg-cli.

Related Articles

Tutorial

How to Keep Slack Always Active on Desktop

The Slack desktop app sets you away 10 minutes after your last keyboard or mouse input on the computer, and no setting turns that off. The desktop fixes for Mac, Windows and Linux, in the order they fail.

Slack Green Team
Guide

How to Change Sleep Settings on a Mac (Ventura to Tahoe)

On macOS Ventura and newer, the Mac's sleep timer is its display timer: set it in System Settings > Lock Screen, under Turn display off on battery and on power adapter when inactive. The Mac sleeps about a minute after the display turns off, unless you turn on Prevent automatic sleeping in Battery > Options, or in Energy on a desktop Mac. Every setting, where it lives by macOS version, and the pmset commands.

Slack Green Team
Guide

Caffeine vs KeepingYouAwake: Which Mac Keep-Awake Cup to Use

Caffeine and KeepingYouAwake are both free, open-source coffee cups for the Mac menu bar. KeepingYouAwake runs on macOS 10.13 and newer, wraps Apple's caffeinate, and can let the display sleep or stop on low battery. Caffeine needs macOS 14.6 and adds an optional cursor nudge that keeps Teams green. Which to pick.

Slack Green Team