Read Slack channels, threads and unreads
slackcli conversations covers channels, DMs, and group DMs: listing them,
reading history and threads, fetching one message, and seeing what is unread.
Every subcommand accepts --workspace <id|name>.
conversations list
Section titled “conversations list”slackcli conversations list # everything you are inslackcli conversations list --types=public_channelslackcli conversations list --types=im # DMs onlyslackcli conversations list --limit=200 --exclude-archived
# Machine-readableslackcli conversations list --json| Option | Default | Purpose |
|---|---|---|
--types <types> |
public_channel,private_channel,mpim,im |
Comma-separated conversation types |
--limit <number> |
100 |
How many to return |
--exclude-archived |
off | Skip archived conversations |
--cursor <cursor> |
— | Fetch the next page |
--json |
off | JSON output with a resolved users array |
DM entries are resolved to the other person’s name. When more results exist, the
exact --cursor command for the next page is printed (human output) or set on
next_cursor (--json; null on the last page).
conversations read
Section titled “conversations read”Read channel history, or one thread.
# Recent messages in a channel (oldest first)slackcli conversations read C1234567890
# One threadslackcli conversations read C1234567890 --thread-ts=1234567890.123456
# The thread a message link points atslackcli conversations read --permalink="https://myteam.slack.com/archives/C1234567890/p1234567890123456"
# Top-level messages onlyslackcli conversations read C1234567890 --exclude-replies
# A time windowslackcli conversations read C1234567890 --oldest=1735689600 --latest=1738368000
# Machine-readableslackcli conversations read C1234567890 --json| Option | Default | Purpose |
|---|---|---|
--thread-ts <ts> |
— | Read a specific thread instead of the channel |
--permalink <url> |
— | Replaces the channel argument and --thread-ts |
--exclude-replies |
off | Drop threaded replies from channel history |
--limit <number> |
100 |
How many messages |
--oldest / --latest |
— | Time range bounds |
--json |
off | JSON output, including ts and thread_ts |
Channel history comes back newest-first from Slack and is reversed so you read
top to bottom. Thread replies are already chronological. --json also includes
reactions, blocks, attachments, file metadata, and a resolved users array.
conversations get
Section titled “conversations get”Fetch one message by channel and timestamp.
slackcli conversations get C1234567890 1234567890.123456slackcli conversations get --permalink="https://myteam.slack.com/archives/C1234567890/p1234567890123456"slackcli conversations get C1234567890 p1234567890123456 --jsonAuth-type caveat. With browser auth this resolves both top-level messages and
thread replies. With a standard token it can only resolve top-level messages
— looking up an arbitrary reply needs its parent’s thread_ts, and no public
Slack API returns that from a reply timestamp alone. Read the thread instead:
conversations read <channel> --thread-ts=<parent>.
conversations unread
Section titled “conversations unread”slackcli conversations unreadslackcli conversations unread --types=dms # channels, dms, groupsslackcli conversations unread --jsonConversations with mentions sort first, then alphabetically. On a workspace with many unread channels this makes one API call per channel to resolve names and may hit Slack rate limits.