Skip to main content

Slack CLI for coding agents — search, read, and draft messages via the Slack Web API using browser-extracted tokens

Project description

npm version PyPI version

slack-cli

A Slack CLI designed for coding agents (Claude Code, Cursor, etc.) that provides structured JSON access to Slack workspaces via the Web API.

It works by extracting authentication tokens from your existing browser session — no Slack app or bot token required.

Install

npm:

npm install -g @alankyshum/slack-cli

pip:

pip install slack-cli-agent

Manual:

git clone https://github.com/alankyshum/slack-cli.git
chmod +x slack-cli/bin/slack-cli
ln -s "$(pwd)/slack-cli/bin/slack-cli" ~/.local/bin/slack-cli

Prerequisites

  • curl and jq (for all commands)
  • python3 (for URL encoding)
  • Node.js + Playwright (only for auth command)
npm install -g playwright
npx playwright install chromium

Quick Start

# 1. Authenticate (opens browser to extract tokens)
slack-cli auth --domain mycompany.slack.com

# 2. Search messages
slack-cli search "from:@alice in:#engineering deployment"

# 3. Read channel history
slack-cli read engineering 10

# 4. Draft a message (saved locally, not sent)
slack-cli draft general "Hey team, the fix for JIRA-123 is ready"

Commands

Command Description
auth --domain <dom> Extract tokens from browser session
whoami Show authenticated user
config Show current configuration
search <query> Search messages (full Slack query syntax)
read <channel> [count] Read channel messages
unreads Show recent activity
draft <channel> <msg> [--thread <ts>] [--file <path>] Save a server-side draft
draft-delete <draft_id> Delete a server-side draft
drafts List saved drafts
send <draft_id> Send a draft (with confirmation prompt)
post <channel> <msg> [--thread <ts>] [--file <path>] Send a message with mrkdwn formatting
channels List your channels
dms List recent DMs
userinfo <user> Look up user by ID, email, or name
status [emoji] [text] Get or set your Slack status (clear to remove)
`presence [user_id username

Search Modifiers

Slack's full search syntax is supported:

Modifier Example Description
from: from:@alice / from:me Messages from a person
in: in:#channel / in:@user Messages in channel or DM
before: before:2025-06-01 Before a date
after: after:2025-01-01 After a date
on: on:2025-03-15 On exact date
during: during:january During a month or year
has: has::eyes: / has:pin Has reaction or pin
is: is:saved / is:thread Saved or thread messages
"..." "exact phrase" Exact phrase match
- -word Exclude word
* deploy* Wildcard (min 3 chars)

Environment Variables

Variable Default Description
SLACK_CLI_HOME ~/.slack-cli Config directory
SLACK_CLI_CHROME_PROFILE ~/.slack-cli/chrome-profile Chrome profile for auth
SLACK_CLI_COUNT 20 Results per page
SLACK_CLI_SORT timestamp Sort: timestamp or score
SLACK_CLI_SORT_DIR desc Direction: asc or desc

How It Works

  1. auth opens a Chromium browser using your existing Chrome profile (via Playwright), navigates to your Slack workspace, and intercepts the xoxc- API token and xoxd- session cookie from live API requests.

  2. All other commands use direct Slack Web API calls via curl — no browser needed, making them fast and suitable for automation.

  3. Drafts are saved locally to ~/.slack-cli/drafts.json. The send command requires interactive confirmation before posting.

  4. All output is structured JSON, making it easy to parse with jq or consume from AI agents.

Security

  • Credentials are stored at ~/.slack-cli/credentials.json with 600 permissions
  • Tokens are xoxc- client tokens scoped to your user session
  • The send command requires explicit y confirmation
  • No data is sent to any third party

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slack_cli_agent-1.4.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slack_cli_agent-1.4.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file slack_cli_agent-1.4.0.tar.gz.

File metadata

  • Download URL: slack_cli_agent-1.4.0.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for slack_cli_agent-1.4.0.tar.gz
Algorithm Hash digest
SHA256 010b19a42ac3bfdac841367e1d8b7fbfac851930e4762b0621d611e83808d42d
MD5 8217caab84400d7395f67ae463e2bd96
BLAKE2b-256 0eaa645773b76996f79aa8b00c7d398dae3623be149066cb8dce03524a78d285

See more details on using hashes here.

Provenance

The following attestation bundles were made for slack_cli_agent-1.4.0.tar.gz:

Publisher: publish.yml on alankyshum/slack-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file slack_cli_agent-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for slack_cli_agent-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa221a54b753bd863f393f5034fb8f33bf8ba80c77d3f27e85be71247fd7438b
MD5 08e9038a5940e17aab496a90201ccc7e
BLAKE2b-256 cebd839e0da6cb7feea4cf928974d4753cd6ce6e9dc63fa6d56aa3ff6550147c

See more details on using hashes here.

Provenance

The following attestation bundles were made for slack_cli_agent-1.4.0-py3-none-any.whl:

Publisher: publish.yml on alankyshum/slack-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page