Slack CLI
for cmdhub.
Channels, conversations, messages, threads, reactions, and users.
cmdhub get slack
data_object Agent Contract
Agents should start with auth/status and discovery commands, inspect schemas before composition, and treat commands marked as mutating as state-changing operations.
Output
Use human output for normal reads, `--json` for scripting or complete structured fields, and `--jsonl` for upstream pipe inputs.
Auth
Slack OAuth. Used for conversations, messages, threads, reactions, search, and users.
Refs
Prefer list/search, then short refs or piped JSONL. Use `resolve` to inspect cached refs.
Schemas
Use `slack schema` and `catalog.json` to inspect fields, flags, examples, and side effects.
Auth scopes
channels:readgroups:readim:readmpim:readchannels:historygroups:historyim:historympim:historychannels:writegroups:writechat:writeusers:readusers:read.emailreactions:readreactions:writesearch:readOptional scope bundles
With slack auth login --files
files:readfiles:writeWith slack auth login --full
team:readchannels:write.invitesgroups:write.invitesim:writempim:writefiles:readfiles:writepins:readpins:writebookmarks:readbookmarks:writereminders:readreminders:writeusers.profile:readusers.profile:writeusers:writednd:readdnd:writeemoji:readusergroups:readterminal Command Reference
Generated from source. Global flags apply to all commands.
Global Flags
--json
bool
Emit JSON machine output--jsonl
bool
Emit JSONL records for piping--output, -o
string
Compatibility output mode: json|jsonl. Prefer --json or --jsonl--view
string = summary
View mode: summary|full--profile
string = default
Config/auth profile--config
string
Config path override--quiet, -q
bool
Suppress non-essential diagnostics--debug
bool
Enable debug diagnostics--limit
int = 50
Maximum items to emit--page-size
int = 50
Requested upstream page size--cursor
string
Continuation cursor--no-paginate
bool
Fetch only one page--version, -v
bool
Print version informationslack auth
Manage Slack authenticationslack auth login
Start Slack OAuth login--callback-port
int
Loopback callback port for OAuth login--files
bool
Request Slack file scopes during OAuth--full
bool
Request the full supported Slack user-scope bundle--team
string
Slack team/workspace ID to request during OAuthslack auth logout
Clear auth stateslack auth refresh
Validate stored Slack tokenslack auth status
Show auth statusslack auth whoami
Show the authenticated Slack userslack bookmark
Manage channel bookmarksslack bookmark create
Create a channel bookmark--channel
string
Channel id, name, or ref--link
string
Bookmark URL--title
string
Bookmark titleslack bookmark delete
Delete a channel bookmark--channel
string
Channel id, name, or ref--dry-run
bool
Preview bookmark deletion without deleting--yes
bool
Confirm deleting bookmarkslack bookmark list
List channel bookmarks--channel
string
Channel id, name, or refslack bookmark update
Update a channel bookmark--channel
string
Channel id, name, or ref--link
string
Bookmark URL--title
string
Bookmark titleslack canvas
Explain Slack Canvas support limitsSlack Canvas provider APIs do not currently expose stable list/read workflows for the CLI surface described by cmdhub.
Use supported Slack file, bookmark, or message workflows instead of scraping the Slack UI.
slack canvas access
Explain unsupported Slack Canvas accessslack canvas create
Explain unsupported Slack Canvas createslack canvas delete
Explain unsupported Slack Canvas deleteslack canvas edit
Explain unsupported Slack Canvas editslack canvas section-lookup
Explain unsupported Slack Canvas section-lookupslack capabilities
Describe capabilities--section
string
Show one capability section: scopes, schemas, or commandsslack channel
Work with channelsInspect, join, and leave Slack channels.
List channels first when you need short refs such as c1 or want to inspect valid channel identifiers. If you already know the channel name, channel get can be a faster first step than channel list.
slack channel archive
Archive a channel--dry-run
bool
Preview channel archive without archiving--id
string
Channel id or name--yes
bool
Confirm archiving the channelslack channel create
Create a channel--name
string
New channel name--private
bool
Create a private channelslack channel get
Get one channel by id or nameGet one Slack channel by id, name, short ref, or one piped channel item.
Prefer this when you already know the channel name and want the canonical channel id without scanning the full channel list first.
--id
string
Channel id or nameslack channel invite
Invite users to a channel--id
string
Channel id or name--user
stringArray = []
User id, name, or ref to invite--yes
bool
Confirm inviting usersslack channel join
Join a public channel--id
string
Channel id or nameslack channel leave
Leave a channel--id
string
Channel id or name--yes
bool
Confirm leaving the channelslack channel list
List channelsList Slack channels and cache local channel refs such as c1.
Use –jsonl when the next step should consume one channel item from stdin. If you already know the channel name, channel get can be faster than listing first.
--exclude-archived
bool = true
Exclude archived conversations--include-archived
bool
Include archived conversations--member-only
bool
Only show conversations where the authenticated user is a member--query
string
Narrow returned conversations by name, topic, purpose, or user token--type
string = all
Conversation type: public, private, im, mpim, or allslack channel mark
Mark a channel read through a timestamp--id
string
Channel id or name--ts
string
Slack timestamp to mark read throughslack channel members
List channel members--id
string
Channel id or nameslack channel purpose
Set a channel purpose--id
string
Channel id or name--purpose
string
Channel purpose textslack channel remove
Remove a user from a channel--dry-run
bool
Preview channel removal without removing the user--id
string
Channel id or name--user
string
User id, name, or ref to remove--yes
bool
Confirm removing the userslack channel rename
Rename a channel--id
string
Channel id or name--name
string
New channel nameslack channel search
Search channels by name or topic--query
string
Channel name/topic queryslack channel topic
Set a channel topic--id
string
Channel id or name--topic
string
Channel topic textslack channel unarchive
Unarchive a channel--id
string
Channel id or name--yes
bool
Confirm restoring the channelslack channel update
Update channel name, topic, or purpose--id
string
Channel id or name--name
string
New channel name--purpose
string
New channel purpose--topic
string
New channel topicslack config
Inspect local configurationslack config explain
Explain resolved configurationslack conversation
Work with Slack conversationsslack conversation get
Get one conversation by id or name--id
string
Conversation id or nameslack conversation list
List conversations visible to the current userList Slack conversations and cache local conversation refs such as v1.
Use conversation commands when you want a broader Slack conversation view that can include channels, DMs, and MPIMs.
--exclude-archived
bool = true
Exclude archived conversations--include-archived
bool
Include archived conversations--member-only
bool
Only show conversations where the authenticated user is a member--query
string
Narrow returned conversations by name, topic, purpose, or user token--type
string = all
Conversation type: public, private, im, mpim, or allslack conversation mark
Mark a conversation read through a timestamp--id
string
Conversation id or name--ts
string
Slack message timestamp to mark throughslack conversation members
List conversation members--id
string
Conversation id or nameslack conversation open
Open a DM or group DMOpen a Slack DM or MPIM with exact users.
Pass –user one or more times with a user id, username, email-like handle already resolvable by Slack user lookup, or cached user ref from user list.
--user
stringArray = []
User id, name, or short ref to includeslack conversation search
Search conversations by name or user--query
string
Conversation name/user query--types
string = public_channel,private_channel,im,mpim
Conversation typesslack dm
Work with Slack DMsslack dm close
Close a DM--id
string
DM id or ref--yes
bool
Confirm closing the DMslack dm get
Get one DM by id or ref--id
string
DM id or refslack dm list
List DMs visible to the current user--types
string = im,mpim
DM conversation typesslack dm open
Open a DM or group DM--user
stringArray = []
User id, name, or ref to include--users
stringArray = []
Comma-separated user ids, names, or refs to includeslack dnd
Inspect and update Slack Do Not Disturbslack dnd end
End DND snooze--yes
bool
Confirm ending DNDslack dnd get
Get DND stateslack dnd snooze
Start DND snooze--minutes
int
Minutes to snooze notifications--yes
bool
Confirm starting DNDslack doctor
Run Slack adapter diagnosticsslack emoji
Discover Slack emojislack emoji list
List emojislack emoji search
Search emoji--query
string
Emoji name queryslack file
Work with Slack filesslack file delete
Delete a Slack file--dry-run
bool
Preview file deletion without deleting--yes
bool
Confirm deleting the fileslack file download
Download a Slack file--force
bool
Overwrite an existing output file--output-file
string
Local destination fileslack file get
Get Slack file metadataslack file list
List Slack files--before
string
Only include files created before this time--channel
string
Channel id, name, or ref--query
string
File search query--show-deleted
bool
Include deleted files when Slack returns them--since
string
Only include files created at or after this time--types
string
Comma-separated Slack file types--user
string
User id, name, or refslack file public-link
Public Link for a Slack file--yes
bool
Confirm changing public file link accessslack file revoke-public-link
Revoke Public Link for a Slack file--yes
bool
Confirm changing public file link accessslack file search
Search Slack files--before
string
Only include files created before this time--channel
string
Channel id, name, or ref--query
string
File search query--show-deleted
bool
Include deleted files when Slack returns them--since
string
Only include files created at or after this time--types
string
Comma-separated Slack file types--user
string
User id, name, or refslack file upload
Upload a local file to Slack--alt-text
string
Accessibility alt text for image files--channel
string
Channel id, name, or ref--file
string
Local file path--initial-comment
string
Optional initial comment--private
bool
Upload without sharing to a channel when Slack supports it--snippet-type
string
Slack snippet type such as javascript or text--thread
string
Optional message ref or timestamp for a thread upload--title
string
Slack file titleslack list-item
Work with Slack List itemsslack list-item create
Create a Slack List item--field
stringArray = []
Field assignment in Name=value form; repeatable--fields-file
string
Read typed field values from a JSON file--list
string
Slack List ref, id, or exact titleslack list-item delete
Delete a Slack List item--dry-run
bool
Preview Slack List item deletion without deleting--item
string
Slack List item ref or id--list
string
Slack List ref, id, or exact title--yes
bool
Confirm deleting the Slack List itemslack list-item get
Get one Slack List item--item
string
Slack List item ref or id--list
string
Slack List ref, id, or exact titleslack list-item list
List items in a Slack List--list
string
Slack List ref, id, or exact titleslack list-item update
Update a Slack List item--field
stringArray = []
Field assignment in Name=value form; repeatable--fields-file
string
Read typed field values from a JSON file--item
string
Slack List item ref or id--list
string
Slack List ref, id, or exact titleslack mcp
Run the MCP serverRun a stdio Model Context Protocol server for this adapter.
The server exposes read-only resource commands by default. Mutating commands are listed only when explicitly allowed with –allow and remain gated by the command contract safety class.
--allow
stringArray = []
Allow mutating command keys such as gmail.message.archive or gmail.message.label.*--allow-dangerous
bool
Allow --allow wildcards to include destructive or sends_external commands--concurrency
int
Maximum concurrent MCP subprocesses--max-output
int64 = 0
Maximum stdout/stderr bytes captured per MCP command--print-config
bool
Print MCP tool configuration and exit--timeout
duration = 0s
Per-command MCP subprocess timeout, for example 45s or 2mslack message
Work with Slack messagesList, inspect, create, reply to, update, and delete Slack messages.
List first when you want short refs such as m1 or want to drive follow-up actions through jsonl pipes.
slack message create
Create a message in a channelCreate a Slack message in one channel.
Pass –channel with a channel name, conversation id, or cached short ref, then provide –text. A single positional text argument is also accepted as a convenience.
--blocks-file
string
Read Block Kit blocks JSON from a local file--broadcast-reply
bool
Broadcast a threaded reply to the channel--channel
string
Target channel id or name--metadata-file
string
Read Slack message metadata JSON from a local file--text
string
Message text--text-file
string
Read message text from a local file--thread
string
Message ref for the thread root--thread-ts
string
Slack thread root timestamp--unfurl-links
bool
Override Slack link unfurl behavior--unfurl-media
bool
Override Slack media unfurl behaviorslack message delete
Delete one or more of your messagesDelete one of your Slack messages. This requires –yes for every execution path.
The target may come from explicit –channel and –ts values, a cached message ref, or one piped message item.
--all
bool
Confirm batch message deletion--channel
string
Channel id or name--dry-run
bool
Preview message delete targets without calling Slack--ts
string
Message timestamp--yes
bool
Confirm destructive batch message deletionslack message get
Get one or more messages by timestampGet one Slack message in detail.
The target may be:
- –channel plus –ts
- a cached message ref such as m1
- one piped message item from stdin
Use message get after message list when you need the channel-scoped details for a single match. For JSONL recovery, pipe exactly one message item from message list or channel-scoped search into this command. Do not pass –json together with –jsonl; –json is for one response, –jsonl is for pipelines.
--channel
string
Channel id or name--ts
string
Slack message timestampslack message list
List recent messages from a channelList recent Slack messages from one channel and cache local message refs such as m1.
Those message refs can often be used directly by message get, message reply, reaction add, and thread get because the cached reference carries both channel and ts. If you know the channel already, prefer message list over search.message for seeded or recent channel-local work. For recovery after a broad search misses, use –channel with –query, emit –jsonl, and pipe the one matching item into message get. Use –json for one structured response or –jsonl for item streams; they are mutually exclusive.
--channel
string
Channel id or name--from
string
Filter by Slack user id, handle, or username returned in message payloads--inclusive
bool
Include messages exactly matching --oldest or --latest--latest
string
Only include messages at or before this Slack timestamp or local time--oldest
string
Only include messages at or after this Slack timestamp or local time--query
string
Text query to match message text--threaded
bool
Expose thread roots and reply counts in list summaries when returned by Slackslack message permalink
Get a Slack message permalink--channel
string
Channel id, name, or ref--ts
string
Slack message timestampslack message reply
Reply in a threadReply in a Slack thread.
The target may be:
- –channel plus –ts
- a cached message ref such as m1
- one piped message or thread item from stdin
--channel
string
Channel id or name--text
string
Reply text--ts
string
Root message timestampslack message schedule
Schedule a Slack message--at
string
Local datetime, relative time, RFC3339 value, or Slack Unix timestamp--channel
string
Target channel id, name, or ref--text
string
Message textslack message search
Search Slack messagesSearch Slack messages by query text.
Use this when you know the terms you want to match but do not already have a channel-scoped message list in hand. If you already know the channel, prefer:
- slack message list –channel
- then slack message get or slack thread get
When a broad search misses a known channel-local message, recover with: slack message list –channel –query –limit 1 –jsonl | slack message get
Do not combine –json and –jsonl; use –jsonl only when feeding another command.
--after
string
Filter messages after YYYY-MM-DD or another unambiguous local date--before
string
Filter messages before YYYY-MM-DD or another unambiguous local date--channel
string
Limit search to one channel by using the channel-scoped message list path--from
string
Filter by Slack user id, handle, email, or me--has
string
Filter by Slack has: qualifier such as link, file, reaction, or pin--query
string
Search query--sort
string
Slack search sort field such as score or timestamp--sort-dir
string
Slack search sort direction such as asc or descslack message update
Update one of your messagesUpdate one of your Slack messages.
The target may come from explicit –channel and –ts values, a cached message ref, or one piped message item.
--blocks-file
string
Read updated Block Kit blocks JSON from a local file--channel
string
Channel id or name--text
string
Updated text--ts
string
Message timestampslack pin
Manage pinned Slack messagesslack pin add
Add a pinned message--channel
string
Channel id, name, or ref--ts
string
Slack message timestamp--yes
bool
Confirm pin mutationslack pin list
List pins in a channel--channel
string
Channel id, name, or refslack pin remove
Remove a pinned message--channel
string
Channel id, name, or ref--ts
string
Slack message timestamp--yes
bool
Confirm pin mutationslack profile
Manage provider profilesslack profile create
Create an unauthenticated provider profileslack profile delete
Delete a local provider profileslack profile list
List provider profilesslack profile rename
Rename a local provider profileslack profile use
Set the default provider profileslack reaction
Work with message reactionsList reaction names and inspect, add, or remove reactions on Slack messages.
These commands work best with a piped message item or a cached message ref such as m1. Use –jsonl when a message list/search result should feed a reaction command; do not combine –json with –jsonl.
slack reaction add
Add a reaction to a messageAdd one reaction to a Slack message.
The target may come from explicit –channel and –ts values, a cached message ref, or one piped message item. For recovery, run message list with –channel and –query, then pipe one –jsonl item into this command.
--channel
string
Channel id or name--name
string
Emoji name without colons--ts
string
Message timestamp--yes
bool
Accepted for compatibility; confirmation is unnecessary for one exact reaction addslack reaction get
Get reactions on a messageGet reactions for one Slack message.
The target may come from explicit –channel and –ts values, a cached message ref, or one piped message item. For recovery, run message list with –channel and –query, then pipe one –jsonl item into this command.
--channel
string
Channel id or name--ts
string
Message timestampslack reaction list
List reaction namesList reaction names that can be used with –name.
Use reaction get for per-message reaction state. The legacy shape reaction list m1 still works as a hidden compatibility path and prints the canonical command that ran.
--channel
string
Channel id or name--ts
string
Message timestampslack reaction remove
Remove your reaction from a messageRemove one of your reactions from a Slack message.
The target may come from explicit –channel and –ts values, a cached message ref, or one piped message item. For recovery, run message list with –channel and –query, then pipe one –jsonl item into this command.
--channel
string
Channel id or name--name
string
Emoji name without colons--ts
string
Message timestamp--yes
bool
Accepted for compatibility; confirmation is unnecessary for one exact reaction removalslack reminder
Manage Slack remindersslack reminder complete
Complete a reminder--yes
bool
Confirm reminder mutationslack reminder create
Create a reminder--text
string
Reminder text--time
string
Reminder timeslack reminder delete
Delete a reminder--dry-run
bool
Preview reminder deletion without deleting--yes
bool
Confirm reminder mutationslack reminder get
Get a reminderslack reminder list
List remindersslack resolve
Resolve a Slack local marker or stored short referenceResolve a Slack short reference into its canonical payload.
Use this when you have a marker such as c1, v1, p1, m1, or u1, or a stored short id such as C2H…5FA, and want to inspect what it refers to.
Resolution is profile-scoped. If a marker does not resolve, verify –profile and rerun the relevant list command.
slack scheduled-message
Inspect and cancel scheduled Slack messagesslack scheduled-message delete
Delete a scheduled message--channel
string
Channel id, name, or ref--dry-run
bool
Preview scheduled message deletion without deleting--yes
bool
Confirm deleting the scheduled messageslack scheduled-message get
Get one scheduled messageslack scheduled-message list
List scheduled messages--channel
string
Channel id, name, or refslack schema
Emit Slack adapter schema hintsShow schema hints for the Slack resource payloads emitted by this CLI.
Use this when you need to understand structured output fields for automation or downstream parsing.
--in
bool
Show input schema--input
bool
Show input schema--out
bool
Show output schema--schema-output
bool
Show output schemaslack slack-list
Work with Slack Listsslack slack-list access
Update Slack List access--access
string
Slack List access policy value supported by Slack--list
string
Slack List ref, id, or exact title--yes
bool
Confirm changing Slack List accessslack slack-list create
Create a Slack List--description
string
Slack List description--title
string
Slack List titleslack slack-list delete
Delete a Slack List--dry-run
bool
Preview Slack List deletion without deleting--list
string
Slack List ref, id, or exact title--yes
bool
Confirm deleting the Slack Listslack slack-list export
Start a Slack List export--list
string
Slack List ref, id, or exact title--yes
bool
Confirm exporting Slack List dataslack slack-list get
Get one Slack List--list
string
Slack List ref, id, or exact titleslack slack-list list
List Slack Lists--limit
int = 20
Maximum Slack Lists to requestslack slack-list search
Search Slack Lists--limit
int = 20
Maximum Slack Lists to request--query
string
Slack List title or text queryslack slack-list update
Update a Slack List--description
string
Updated Slack List description--list
string
Slack List ref, id, or exact title--title
string
Updated Slack List titleslack status
Inspect auth status or update Slack custom statusWith no subcommand, show Slack auth status.
Use status get, status set, and status clear for Slack custom status.
slack status clear
Clear custom status--yes
bool
Confirm clearing custom statusslack status get
Get current custom statusslack status set
Set custom status--clear-at
string
Alias for --expires; parsed locally--duration
string
Status duration such as 30m, 1h, or 2d--emoji
string
Status emoji--expires
string
Status expiration time, parsed locally--text
string
Status textslack thread
Work with Slack threadsInspect Slack threads and their replies.
These commands work best with a piped message item or a cached message ref such as m1.
slack thread get
Get a thread and its repliesGet a Slack thread and its replies.
The target may come from explicit –channel and –ts values, a cached message ref, or one piped message or thread item.
--channel
string
Channel id or name--ts
string
Root message timestampslack user
Work with Slack usersslack user get
Get one user by id or name--id
string
User id or nameslack user list
List users--include-deactivated
bool
Include deactivated Slack accountsslack user lookup-email
Look up one user by email--email
string
Email addressslack user presence
Get a user's Slack presence--id
string
User id or nameslack user search
Search users by name or email--include-deactivated
bool
Include deactivated Slack accounts--query
string
User name/email queryslack usergroup
Inspect Slack user groupsslack usergroup get
Get a user groupslack usergroup list
List user groupsslack usergroup members
List user group membersslack version
Show slack version informationslack workspace
Inspect the selected Slack workspaceslack workspace get
Get selected workspace metadataplay_circle Live Examples
Output captured from a real workspace. Regenerate with
scripts/gen-docs.sh --update.
auth
Authenticated as philip@cmdhub.run
Field Value
------------ -----
Workspace CommandHub
Workspace ID {id}
User philip
User ID {id}
Email philip@cmdhub.run
Next steps:
- Capabilities: slack capabilities
- List conversations: slack conversation list --limit 10
- List messages: slack message list --channel general --limit 10Authenticated as philip@cmdhub.run
Field Value
------------ -----
Workspace CommandHub
Workspace ID {id}
User philip
User ID {id}
Email philip@cmdhub.run
Next steps:
- Capabilities: slack capabilities
- List conversations: slack conversation list --limit 10
- List messages: slack message list --channel general --limit 10channels
Channels REF NAME TYPE STATE MEMBERS UPDATED c1 #all-commandhub public joined 1 25d ago c2 #new-channel public joined 1 25d ago c3 #social public joined 1 25d ago c4 #cmdhub-evals-b public joined 1 2d ago c5 #cmdhub-evals-a public joined 1 2d ago Next steps: - Inspect channel: slack channel get c1 --view full - List messages: slack message list --channel c1 --limit 20
Channels REF NAME TYPE STATE MEMBERS UPDATED c4 #cmdhub-evals-b public joined 1 2d ago c6 #cmdhub-eval-slack-chan-20260614t102136z-be35d81f public not joined 0 21d ago Next steps: - Inspect channel: slack channel get c4 --view full - List messages: slack message list --channel c4 --limit 20
{id} #all-commandhub
Field Value
---------- -----
ID {id}
Visibility public
Membership member
Status active
Next steps:
- List: slack channel list --limit 10
- Messages: slack message list --channel {id} --limit 10Users (1 total) REF p1 Next steps: - Open: slack user get p1 - Search: slack user search --query <text> - Channels: slack channel list - Messages: slack message list --channel general --limit 10
messages
Messages (2 total) REF TITLE m1 cmdhub-eval-slack-post-delete-20260614t102210z-1c529d9f root message m2 philip has joined the channel Next steps: - Open: slack message get m1 - Search: slack message search --query <text> - Channels: slack channel list - Messages: slack message list --channel general --limit 10
{"schema":"pc.cli.v1","type":"item","command_id":"cmd_1783327965692638785","ts":"2026-07-06T08:52:46.{id}","data":{"app_id":"{id}","blocks":[{"block_id":"TyLzs","elements":[{"elements":[{"text":"cmdhub-eval-slack-post-delete-20260614t102210z-1c529d9f root message","type":"text"}],"type":"rich_text_section"}],"type":"rich_text"}],"bot_id":"{id}","bot_profile":{"app_id":"{id}","deleted":false,"icons":{"image_36":"https://avatars.slack-edge.com/2026-05-19/11193205134016_f0465822aa1193330e71_36.png","image_48":"https://avatars.slack-edge.com/2026-05-19/11193205134016_f0465822aa1193330e71_48.png","image_72":"https://avatars.slack-edge.com/2026-05-19/11193205134016_f0465822aa1193330e71_72.png"},"id":"{id}","name":"CmdHub","team_id":"{id}","updated":{id}},"channel":"{id}","id":"{id}/{id}.257399","team":"{id}","text":"cmdhub-eval-slack-post-delete-20260614t102210z-1c529d9f root message","ts":"{id}.257399","type":"message","user":"{id}"}}
{"schema":"pc.cli.v1","type":"meta","command_id":"cmd_1783327965692638785","ts":"2026-07-06T08:52:46.{id}","data":{"count_emitted":1,"next_cursor":null,"request":{"channel":"cmdhub-evals-a","channel_id":"{id}","from":"","inclusive":null,"latest":null,"oldest":null,"query":"","threaded":false},"truncated":false}}m1 cmdhub-eval-slack-post-delete-20260614t102210z-1c529d9f root message
Field Value
--------- -----
Channel #cmdhub-evals-a ({id})
Timestamp 21d ago
Author philip
Next steps:
- Thread: slack thread get m1
- Reactions: slack reaction get m1
- List messages: slack message list --channel c5 --limit 10Message delete dry run: 1 target(s)
REF CHANNEL TS
m1 #cmdhub-evals-a ({id}) {id}.257399
Next steps:
- Execute bounded delete: slack message delete m1 --yes
- Inspect first: slack message get m1INVALID_ARGUMENT: missing slack message fields Next steps: - Create: slack message create --channel c1 --text "Hello world" - Channels: slack channel list --limit 10 - Help: slack message create --help exit status 2
INVALID_ARGUMENT: missing reply fields Next steps: - Messages: slack message list --channel general --limit 10 - Help: slack thread get --help exit status 2
INVALID_ARGUMENT: missing delete fields Next steps: - Channels: slack channel list --limit 10 - Messages: slack message list --channel general --limit 10 - Help: slack message --help exit status 2
threads
Thread #cmdhub-evals-a ({id})/21d ago
Field Value
-------- -----
Channel #cmdhub-evals-a ({id})
Root TS 21d ago
Messages 1
Has more false
REF WHEN AUTHOR TEXT
m1 21d ago philip cmdhub-eval-slack-post-delete-20260614t102210z-1c529d9f root message
Next steps:
- Reply: slack message reply --channel {id} --ts {id}.257399 --text 'Following up here.'
- List messages: slack message list --channel {id} --limit 10files
No file found. Next steps: - Search: slack file search --query <text> - Status: slack auth status - Channels: slack channel list - Messages: slack message list --channel general --limit 10
search
Alias: slack search message -> slack message search
Messages matching "eval"
REF CHANNEL WHEN AUTHOR TEXT
m1 #cmdhub-evals-a ({id}) 21d ago philip cmdhub-eval-slack-post-delete-20260614t102210z-1c529d9f root message
m3 #cmdhub-eval-slack-chan-20260614t100724z-19be26ee ({id}) 21d ago philip set the channel description: Eval cleanup for cmdhub-eval-slack-chan-20260614t100724z-19be26ee
m4 #cmdhub-eval-slack-chan-20260614t100724z-19be26ee ({id}) 21d ago philip set the channel topic: Eval cleanup: cmdhub-eval-slack-chan-20260614t100724z-19be26ee
m5 #cmdhub-eval-slack-chan-20260614t102136z-be35d81f ({id}) 21d ago philip set the channel topic: Eval cleanup for cmdhub-eval-slack-chan-20260614t102136z-be35d81f
Next steps:
- Open: slack message get m1
- List channel: slack message list --channel {id} --limit 10
- Search example: slack message search --query roadmap --limit 10No messages found for "cmdhub-docshot-no-such-message-token" in cmdhub-evals-a. Next steps: - Retry channel: slack message list --channel cmdhub-evals-a --query "cmdhub-docshot-no-such-message-token" --limit 20 - Search workspace: slack message search --query "cmdhub-docshot-no-such-message-token" --limit 10 - Channels: slack channel list --limit 10
Alias: slack search message -> slack message search No messages found for "cmdhub-docshot-no-such-message-token" in c1. Next steps: - Retry channel: slack message list --channel c1 --query "cmdhub-docshot-no-such-message-token" --limit 20 - Search workspace: slack message search --query "cmdhub-docshot-no-such-message-token" --limit 10 - Channels: slack channel list --limit 10
users
Users (2 total) REF TITLE WHEN p2 slackbot 0 p1 philip 1.783080476e+09 Next steps: - Open: slack user get p2 - Search: slack user search --query <text> - Channels: slack channel list - Messages: slack message list --channel general --limit 10
{id} philip
Field Value
--------- -----
ID {id}
Username philip
Real name philip
Email philip@cmdhub.run
Kind person
State active
Next steps:
- List users: slack user list --limit 20
- List conversations: slack conversation list --limit 10alt_route Composition Patterns
Bridge your ecosystem with zero middleware.
# Pull one recent message and inspect the whole thread
slack message list --channel general --limit 1 --jsonl \
| slack thread get
