agent-slack
Installation
Summary
Slack automation CLI for reading, searching, sending, and managing messages, channels, and files.
- Supports message operations: fetch single messages or threads, browse channel history, send/edit/delete messages, add/remove reactions, and draft rich-text messages in a browser editor
- Download attachments (snippets, images, files) automatically; search messages and files across channels with date and user filters
- Create channels, invite users (including external), open DMs or group DMs, and mark channels as read up to a specific message
- Fetch Slack canvases as markdown and look up user information; multi-workspace support with explicit workspace targeting to avoid ambiguity
- Auto-authentication via Slack Desktop, Chrome, or Firefox; manual token configuration available via environment variables
SKILL.md
Slack automation with agent-slack
agent-slack is a CLI binary on $PATH. Invoke directly (e.g. agent-slack user list).
Installation
If agent-slack is not found on $PATH, install it:
curl -fsSL https://raw.githubusercontent.com/stablyai/agent-slack/main/install.sh | sh(recommended)npm i -g agent-slack(requires Node >= 22.5)nix run github:stablyai/agent-slack -- <args>(no install needed, prefix all commands)
CRITICAL: Bash command formatting rules
Claude Code's permission checker has security heuristics that force manual approval prompts. Avoid these patterns to keep commands auto-allowed. See: https://github.com/anthropics/claude-code/issues/34379
- No
#anywhere in the command string. Treated as a comment delimiter even inside quotes. Use bare channel names (generalnot#general). No#comments in inline scripts — use the Bash tool'sdescriptionparameter instead. - No
''(consecutive single quotes) or""(consecutive double quotes). Triggers "potential obfuscation" check. Avoid Python empty string literals liked.get('key', '')— used.get('key')instead. - Only
| jqfor filtering — no python3, no other commands.python3 -cis not in the allow list and triggers prompts.jqwith single-quote-only expressions (no"inside) is safe: