✓ Verified 💻 Development ✓ Enhanced Data

Slk

Read, send, search, and manage Slack messages and DMs via the slk CLI.

Rating
4.1 (175 reviews)
Downloads
2,078 downloads
Version
1.0.0

Overview

Read, send, search, and manage Slack messages and DMs via the slk CLI.

Complete Documentation

View Source →

slk — Slack CLI

Session-based Slack CLI for macOS. Auto-authenticates from the Slack desktop app — no tokens, no OAuth, no app installs. Acts as your user (xoxc- session tokens).

Commands

bash
# Auth
slk auth                              # Test authentication, show user/team

# Read
slk channels                          # List channels (alias: ch)
slk dms                               # List DM conversations with IDs (alias: dm)
slk read <channel> [count]            # Read recent messages, default 20 (alias: r)
slk read @username [count]            # Read DMs by username
slk read <channel> --threads          # Auto-expand all threads
slk read <channel> --from 2026-02-01  # Date range filter
slk thread <channel> <ts> [count]     # Read thread replies, default 50 (alias: t)
slk search <query> [count]            # Search messages across workspace
slk users                             # List workspace users (alias: u)

# Activity
slk activity                          # All channels with unread/mention counts (alias: a)
slk unread                            # Only unreads, excludes muted (alias: ur)
slk starred                           # VIP users + starred items (alias: star)
slk saved [count] [--all]             # Saved for later items (alias: sv)
slk pins <channel>                    # Pinned items in a channel (alias: pin)

# Write
slk send <channel> <message>          # Send a message (alias: s)
slk react <channel> <ts> <emoji>      # React to a message

# Drafts (synced to Slack editor UI)
slk draft <channel> <message>         # Draft a channel message
slk draft thread <ch> <ts> <message>  # Draft a thread reply
slk draft user <user_id> <message>    # Draft a DM
slk drafts                            # List active drafts
slk draft drop <draft_id>             # Delete a draft

Channel accepts name (general), ID (C08A8AQ2AFP), @username for DMs, or user ID (U07RQTFCLUC).

Auth

Automatic — extracts session token from Slack desktop app's LevelDB + decrypts cookie from macOS Keychain.

First run: macOS will show a Keychain dialog asking to allow access to "Slack Safe Storage":

  • Allow — one-time access, prompted again next time
  • Always Allow — permanent, no future prompts (convenient but any process running as your user can extract credentials silently)
  • Deny — blocks access, slk cannot authenticate
Token cache: ~/.local/slk/token-cache.json — auto-validated, auto-refreshed on invalid_auth.

If auth fails (token rotated, Slack logged out):

bash
rm ~/.local/slk/token-cache.json
slk auth

Slack desktop app must be installed and logged in. Does not need to be running if token is cached.

Reading Threads

Threads require a Slack timestamp. Use --ts to get it, then read the thread:

bash
slk read general 10 --ts
# Output: [1/30/2026, 11:41 AM ts:1769753479.788949] User [3 replies]: ...

slk thread general 1769753479.788949

Agent Workflow Examples

  • Heartbeat/cron unread checkslk unreadslk read for channels that need attention
  • Save & pick up — Human saves threads in Slack ("Save for later"). Agent runs slk saved during heartbeat, reads full threads with slk thread, summarizes or extracts action items
  • Daily channel digestslk read 100 across key channels → compile decisions, open questions, action items → slk send daily-digest "📋 ..."
  • Weekly DM summaryslk read @boss 200 --from 2026-02-01 --threads → extract action items, decisions, context
  • Thread monitoring — Watch specific threads for new replies (incidents, PR reviews, decisions)
  • Draft for human reviewslk draft "..." posts to Slack's editor UI for human to review before sending
  • Search-driven contextslk search "deployment process" or slk pins to pull context before answering questions

Limitations

  • macOS only — uses Keychain + Electron storage paths
  • Session-based — acts as your user, not a bot. Be mindful of what you send
  • Draft drop may fail with draft_has_conflict if Slack has that conversation open
  • Session token expires on logout — keep Slack app running or rely on cached token

Missing Features & Issues

Create PR or Report Issue at: https://github.com/therohitdas/slkcli

Installation

Terminal bash

openclaw install slk
    
Copied!

💻Code Examples

slk draft drop <draft_id> # Delete a draft

slk-draft-drop-draftid--delete-a-draft.txt
Channel accepts name (`general`), ID (`C08A8AQ2AFP`), `@username` for DMs, or user ID (`U07RQTFCLUC`).

## Auth

Automatic — extracts session token from Slack desktop app's LevelDB + decrypts cookie from macOS Keychain.

**First run:** macOS will show a Keychain dialog asking to allow access to "Slack Safe Storage":
- **Allow** — one-time access, prompted again next time
- **Always Allow** — permanent, no future prompts (convenient but any process running as your user can extract credentials silently)
- **Deny** — blocks access, slk cannot authenticate

**Token cache:** `~/.local/slk/token-cache.json` — auto-validated, auto-refreshed on `invalid_auth`.

If auth fails (token rotated, Slack logged out):

slk auth

slk-auth.txt
Slack desktop app must be installed and logged in. Does not need to be running if token is cached.

## Reading Threads

Threads require a Slack timestamp. Use `--ts` to get it, then read the thread:
example.sh
# Auth
slk auth                              # Test authentication, show user/team

# Read
slk channels                          # List channels (alias: ch)
slk dms                               # List DM conversations with IDs (alias: dm)
slk read <channel> [count]            # Read recent messages, default 20 (alias: r)
slk read @username [count]            # Read DMs by username
slk read <channel> --threads          # Auto-expand all threads
slk read <channel> --from 2026-02-01  # Date range filter
slk thread <channel> <ts> [count]     # Read thread replies, default 50 (alias: t)
slk search <query> [count]            # Search messages across workspace
slk users                             # List workspace users (alias: u)

# Activity
slk activity                          # All channels with unread/mention counts (alias: a)
slk unread                            # Only unreads, excludes muted (alias: ur)
slk starred                           # VIP users + starred items (alias: star)
slk saved [count] [--all]             # Saved for later items (alias: sv)
slk pins <channel>                    # Pinned items in a channel (alias: pin)

# Write
slk send <channel> <message>          # Send a message (alias: s)
slk react <channel> <ts> <emoji>      # React to a message

# Drafts (synced to Slack editor UI)
slk draft <channel> <message>         # Draft a channel message
slk draft thread <ch> <ts> <message>  # Draft a thread reply
slk draft user <user_id> <message>    # Draft a DM
slk drafts                            # List active drafts
slk draft drop <draft_id>             # Delete a draft
example.sh
slk read general 10 --ts
# Output: [1/30/2026, 11:41 AM ts:1769753479.788949] User [3 replies]: ...

slk thread general 1769753479.788949

Tags

#web_and-frontend-development #cli

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author therohitdas
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install slk