# Slack CLI

Channels, conversations, messages, threads, reactions, and users.

## Install

```bash
cmdhub get slack
```

## Authentication

OAuth2

## Agent-Readable Catalog

- Machine-readable command catalog: `/cli/slack/catalog.json`
- Stable command anchors use the `cmd-...` IDs listed under each command.
- Inspect this catalog before planning tool use for command paths, examples, flags, mutation markers, and dry-run support.

## Overview

```bash
# Pull one recent message and inspect the whole thread
slack message list --channel general --limit 1 --jsonl \
  | slack thread get
```

## CLI Overview

Slack adapter CLI

Work with Slack channels, conversations, messages, reactions, threads, and users.

The intended workflow is:
- list first
- follow up with a short ref such as c1 or m1, or pipe jsonl into the next command
- use resolve when you need to inspect what a short ref expands to

Use --jsonl for self-pipe flows such as:
  slack message list --channel general --limit 1 --jsonl | slack message get
  slack message list --channel general --limit 1 --jsonl | slack reaction add --name eyes

Use --json for one structured response and --jsonl for item streams; they are mutually exclusive.
If broad search misses but you know the channel, recover with:
  slack message list --channel <channel> --query <text> --limit 1 --jsonl | slack message get

## Generated Coverage

- Command groups: `17`
- Total documented command nodes: `54`
- Live examples: `7`
- Lifecycle surfaces: `auth`, `doctor`, `capabilities`, `schema`, `resolve`, `version`
- Machine-readable output: `--json`, `--jsonl`
- Human views: `summary`, `full`

## Auth Contract

- Auth mode: OAuth2
- Provider permission model: Slack OAuth
- Auth scopes: `channels:read`, `groups:read`, `im:read`, `mpim:read`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `channels:write`, `groups:write`, `chat:write`, `users:read`, `users:read.email`, `reactions:read`, `reactions:write`, `search:read`
- Scope note: Used for conversations, messages, threads, reactions, search, and users.
- Standard commands: `auth login`, `auth logout`, `auth refresh`, `auth status`, `auth whoami`
- `auth status --json` reports `tool`, `profile`, `provider`, `authenticated`, and `suggested_next_step`.
- `auth whoami --json` is the stable way to answer identity questions.

## Agent Safety Notes

- Discovery commands such as `list`, `search`, `get`, `resolve`, `schema`, `doctor`, `capabilities`, `status`, and `whoami` are the safest commands to run first.
- Treat commands marked as mutating as state-changing local or provider operations.
- Mutating command paths: `slack auth login`, `slack auth logout`, `slack auth refresh`, `slack channel archive`, `slack channel create`, `slack channel unarchive`, `slack login`, `slack logout`, `slack message create`, `slack message delete`, `slack message reply`, `slack message update`, `slack profile create`, `slack profile delete`, `slack profile use`, `slack reaction add`, `slack reaction remove`
- No generated `--dry-run` flag was detected for this CLI. Use discovery commands before mutating commands.

## Global Flags

- `--json` (bool): Emit JSON machine output
- `--jsonl` (bool): Emit JSONL records for piping
- `--output` (string): Compatibility output mode: json|jsonl. Prefer --json or --jsonl
- `--view` (string): View mode: summary|full Default: `summary`.
- `--profile` (string): Config/auth profile Default: `default`.
- `--config` (string): Config path override
- `--quiet` (bool): Suppress non-essential diagnostics
- `--debug` (bool): Enable debug diagnostics
- `--limit` (int): Maximum items to emit Default: `50`.
- `--page-size` (int): Requested upstream page size Default: `50`.
- `--cursor` (string): Continuation cursor
- `--no-paginate` (bool): Fetch only one page
- `--version` (bool): Print version information

## Command Reference

### `slack auth`

- Anchor: `cmd-slack-auth`
- Mutates state: `no`
- Supports dry run: `no`

Manage Slack authentication

#### `slack auth login`

- Anchor: `cmd-slack-auth-login`
- Mutates state: `yes`
- Supports dry run: `no`

Start Slack OAuth login

Example:

```bash
slack --profile work auth login
slack auth login
slack auth login --help
```

#### `slack auth logout`

- Anchor: `cmd-slack-auth-logout`
- Mutates state: `yes`
- Supports dry run: `no`

Clear auth state

Example:

```bash
slack --profile work auth logout
slack auth logout
slack auth logout --help
```

#### `slack auth refresh`

- Anchor: `cmd-slack-auth-refresh`
- Mutates state: `yes`
- Supports dry run: `no`

Validate stored Slack token

Example:

```bash
slack auth refresh
slack auth refresh --help
slack auth refresh --json
```

#### `slack auth status`

- Anchor: `cmd-slack-auth-status`
- Mutates state: `no`
- Supports dry run: `no`

Show auth status

Example:

```bash
slack auth status
slack auth status --help
slack auth status --json
slack auth whoami
```

#### `slack auth whoami`

- Anchor: `cmd-slack-auth-whoami`
- Mutates state: `no`
- Supports dry run: `no`

Show the authenticated Slack user

Example:

```bash
slack auth whoami
slack auth whoami --help
slack auth whoami --json
```

### `slack capabilities`

- Anchor: `cmd-slack-capabilities`
- Mutates state: `no`
- Supports dry run: `no`

Describe capabilities

Example:

```bash
slack capabilities --help
```

### `slack channel`

- Anchor: `cmd-slack-channel`
- Mutates state: `no`
- Supports dry run: `no`

Work with channels

Inspect, 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`

- Anchor: `cmd-slack-channel-archive`
- Mutates state: `yes`
- Supports dry run: `no`

Archive a channel

Archive one Slack channel by id, name, short ref, or one piped channel item. This changes channel visibility and requires --yes.

Example:

```bash
slack channel archive --help
slack channel archive c1 --yes
```

Flags:

- `--id` (string): Channel id or name
- `--yes` (bool): Confirm archiving the channel

#### `slack channel create`

- Anchor: `cmd-slack-channel-create`
- Mutates state: `yes`
- Supports dry run: `no`

Create a channel

Create one Slack channel by name. Use --private for a private channel.

Example:

```bash
slack channel create --help
slack channel create --name cmdhub-eval-updates
slack channel create --name cmdhub-private --private
```

Flags:

- `--name` (string): New channel name
- `--private` (bool): Create a private channel

#### `slack channel get`

- Anchor: `cmd-slack-channel-get`
- Mutates state: `no`
- Supports dry run: `no`

Get one channel by id or name

Get 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.

Example:

```bash
slack channel get
slack channel get c1
slack channel get cmdhub-evals-a
slack channel get general
slack channel list --limit 1 --jsonl | slack channel get
```

Flags:

- `--id` (string): Channel id or name

#### `slack channel join`

- Anchor: `cmd-slack-channel-join`
- Mutates state: `no`
- Supports dry run: `no`

Join a public channel

Join one public Slack channel by id, name, short ref, or one piped channel item.

Example:

```bash
slack channel join --help
slack channel join c1
slack channel join general
```

Flags:

- `--id` (string): Channel id or name

#### `slack channel leave`

- Anchor: `cmd-slack-channel-leave`
- Mutates state: `no`
- Supports dry run: `no`

Leave a channel

Leave one Slack channel by id, name, short ref, or one piped channel item.

Example:

```bash
slack channel leave --help
slack channel leave c1
slack channel leave general
```

Flags:

- `--id` (string): Channel id or name

#### `slack channel list`

- Anchor: `cmd-slack-channel-list`
- Mutates state: `no`
- Supports dry run: `no`

List channels

List 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.

Example:

```bash
slack channel get cmdhub-evals-a
slack channel list
slack channel list --limit 1 --jsonl | slack channel get
slack channel list --limit 10
```

#### `slack channel purpose`

- Anchor: `cmd-slack-channel-purpose`
- Mutates state: `no`
- Supports dry run: `no`

Set a channel purpose

Set the purpose for one Slack channel by id, name, short ref, or one piped channel item.

Example:

```bash
slack channel purpose --help
slack channel purpose --id cmdhub-evals-a --purpose 'Low-value test channel'
slack channel purpose c1 --purpose 'Coordinate cmdhub evals'
```

Flags:

- `--id` (string): Channel id or name
- `--purpose` (string): Channel purpose text

#### `slack channel rename`

- Anchor: `cmd-slack-channel-rename`
- Mutates state: `no`
- Supports dry run: `no`

Rename a channel

Rename one Slack channel by id, name, short ref, or one piped channel item.

Example:

```bash
slack channel rename --help
slack channel rename --id cmdhub-eval-old --name cmdhub-eval-new
slack channel rename c1 --name cmdhub-eval-renamed
```

Flags:

- `--id` (string): Channel id or name
- `--name` (string): New channel name

#### `slack channel topic`

- Anchor: `cmd-slack-channel-topic`
- Mutates state: `no`
- Supports dry run: `no`

Set a channel topic

Set the topic for one Slack channel by id, name, short ref, or one piped channel item.

Example:

```bash
slack channel topic --help
slack channel topic --id cmdhub-evals-a --topic 'Eval workspace'
slack channel topic c1 --topic 'Daily coordination'
```

Flags:

- `--id` (string): Channel id or name
- `--topic` (string): Channel topic text

#### `slack channel unarchive`

- Anchor: `cmd-slack-channel-unarchive`
- Mutates state: `yes`
- Supports dry run: `no`

Unarchive a channel

Unarchive one Slack channel by id, name, short ref, or one piped channel item.

Example:

```bash
slack channel unarchive --help
slack channel unarchive c1
```

Flags:

- `--id` (string): Channel id or name

### `slack config`

- Anchor: `cmd-slack-config`
- Mutates state: `no`
- Supports dry run: `no`

Inspect local configuration

#### `slack config explain`

- Anchor: `cmd-slack-config-explain`
- Mutates state: `no`
- Supports dry run: `no`

Explain resolved configuration

Example:

```bash
slack config explain --help
```

### `slack conversation`

- Anchor: `cmd-slack-conversation`
- Mutates state: `no`
- Supports dry run: `no`

Work with Slack conversations

Inspect Slack conversations, including channels and other conversation types exposed by the API.

#### `slack conversation get`

- Anchor: `cmd-slack-conversation-get`
- Mutates state: `no`
- Supports dry run: `no`

Get one conversation by id or name

Get one Slack conversation by id, name, short ref, or one piped conversation item.

Example:

```bash
slack conversation get
slack conversation get general
slack conversation get v1
```

Flags:

- `--id` (string): Conversation id or name

#### `slack conversation list`

- Anchor: `cmd-slack-conversation-list`
- Mutates state: `no`
- Supports dry run: `no`

List conversations visible to the current user

List 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.

Example:

```bash
slack conversation list
slack conversation list --limit 10
slack conversation list --types public_channel,private_channel --limit 10
```

Flags:

- `--types` (string): Conversation types Default: `public_channel,private_channel,im,mpim`.

#### `slack conversation open`

- Anchor: `cmd-slack-conversation-open`
- Mutates state: `no`
- Supports dry run: `no`

Open a DM or group DM

Open 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.

Example:

```bash
slack conversation open --help
slack conversation open --user U12345678 --user U23456789
slack conversation open --user p1
```

Flags:

- `--user` (stringArray): User id, name, or short ref to include

### `slack doctor`

- Anchor: `cmd-slack-doctor`
- Mutates state: `no`
- Supports dry run: `no`

Run Slack adapter diagnostics

Example:

```bash
slack doctor
slack doctor --help
slack doctor --json
```

### `slack login`

- Anchor: `cmd-slack-login`
- Mutates state: `yes`
- Supports dry run: `no`

Start Slack OAuth login

Example:

```bash
slack --profile work login
slack login
```

### `slack logout`

- Anchor: `cmd-slack-logout`
- Mutates state: `yes`
- Supports dry run: `no`

Clear auth state

Example:

```bash
slack --profile work logout
slack logout
```

### `slack message`

- Anchor: `cmd-slack-message`
- Mutates state: `no`
- Supports dry run: `no`

Work with Slack messages

List, 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`

- Anchor: `cmd-slack-message-create`
- Mutates state: `yes`
- Supports dry run: `no`

Create a message in a channel

Create a Slack message in one channel.

Pass --channel with a channel name, conversation id, or cached short ref, then provide --text.

Example:

```bash
slack message create --channel c1 --text 'hello'
slack message create --channel general --text 'hello'
slack message create --help
```

Flags:

- `--channel` (string): Target channel id or name
- `--text` (string): Message text

#### `slack message delete`

- Anchor: `cmd-slack-message-delete`
- Mutates state: `yes`
- Supports dry run: `no`

Delete one or more of your messages

Delete one of your Slack messages.

The target may come from explicit --channel and --ts values, a cached message ref, or one piped message item.

Example:

```bash
slack message delete --channel general --ts 171.0001
slack message delete --help
slack message delete m1
```

Flags:

- `--all` (bool): Confirm batch message deletion
- `--channel` (string): Channel id or name
- `--ts` (string): Message timestamp
- `--yes` (bool): Confirm destructive batch message deletion

#### `slack message get`

- Anchor: `cmd-slack-message-get`
- Mutates state: `no`
- Supports dry run: `no`

Get one or more messages by timestamp

Get 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.

Example:

```bash
slack message get
slack message get --channel general --ts 171.0001
slack message get m1
slack message list --channel cmdhub-evals-a --limit 1 --jsonl | slack message get
slack message list --channel general --limit 1 --jsonl | slack message get
```

Flags:

- `--channel` (string): Channel id or name
- `--ts` (string): Slack message timestamp

#### `slack message list`

- Anchor: `cmd-slack-message-list`
- Mutates state: `no`
- Supports dry run: `no`

List recent messages from a channel

List 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.

Example:

```bash
slack message list
slack message list --channel cmdhub-evals-a --limit 10
slack message list --channel cmdhub-evals-a --query eval-slack-msg-123
slack message list --channel general --limit 1 --jsonl | slack message get
slack message list --channel general --limit 1 --jsonl | slack reaction add --name eyes
slack message list --channel general --limit 10
```

Flags:

- `--channel` (string): Channel id or name
- `--query` (string): Text query to match message text

#### `slack message reply`

- Anchor: `cmd-slack-message-reply`
- Mutates state: `yes`
- Supports dry run: `no`

Reply in a thread

Reply 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

Example:

```bash
slack message list --channel general --limit 1 --jsonl | slack message reply --text 'Following up here.'
slack message reply --channel general --ts 171.0001 --text 'Following up here.'
slack message reply --help
slack message reply m1 --text 'Following up here.'
```

Flags:

- `--channel` (string): Channel id or name
- `--text` (string): Reply text
- `--ts` (string): Root message timestamp

#### `slack message update`

- Anchor: `cmd-slack-message-update`
- Mutates state: `yes`
- Supports dry run: `no`

Update one of your messages

Update one of your Slack messages.

The target may come from explicit --channel and --ts values, a cached message ref, or one piped message item.

Example:

```bash
slack message update --channel general --ts 171.0001 --text 'Updated text'
slack message update --help
slack message update m1 --text 'Updated text'
```

Flags:

- `--channel` (string): Channel id or name
- `--text` (string): Updated text
- `--ts` (string): Message timestamp

### `slack profile`

- Anchor: `cmd-slack-profile`
- Mutates state: `no`
- Supports dry run: `no`

Manage provider profiles

#### `slack profile create`

- Anchor: `cmd-slack-profile-create`
- Mutates state: `yes`
- Supports dry run: `no`

Create an unauthenticated provider profile

Example:

```bash
slack profile create --help
```

#### `slack profile delete`

- Anchor: `cmd-slack-profile-delete`
- Mutates state: `yes`
- Supports dry run: `no`

Delete a local provider profile

Example:

```bash
slack profile delete --help
```

#### `slack profile list`

- Anchor: `cmd-slack-profile-list`
- Mutates state: `no`
- Supports dry run: `no`

List provider profiles

Example:

```bash
slack profile list --help
```

#### `slack profile rename`

- Anchor: `cmd-slack-profile-rename`
- Mutates state: `no`
- Supports dry run: `no`

Rename a local provider profile

Example:

```bash
slack profile rename --help
```

#### `slack profile use`

- Anchor: `cmd-slack-profile-use`
- Mutates state: `yes`
- Supports dry run: `no`

Set the default provider profile

Example:

```bash
slack profile use --help
```

### `slack reaction`

- Anchor: `cmd-slack-reaction`
- Mutates state: `no`
- Supports dry run: `no`

Work with message reactions

List, add, and 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`

- Anchor: `cmd-slack-reaction-add`
- Mutates state: `yes`
- Supports dry run: `no`

Add a reaction to a message

Add 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.

Example:

```bash
slack message list --channel general --limit 1 --jsonl | slack reaction add --name eyes
slack reaction add --channel general --ts 171.0001 --name eyes
slack reaction add --help
slack reaction add m1 --name eyes
```

Flags:

- `--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 add

#### `slack reaction list`

- Anchor: `cmd-slack-reaction-list`
- Mutates state: `no`
- Supports dry run: `no`

List reactions on a message

List 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.

Example:

```bash
slack reaction list
slack reaction list --channel general --ts 171.0001
slack reaction list m1
```

Flags:

- `--channel` (string): Channel id or name
- `--ts` (string): Message timestamp

#### `slack reaction remove`

- Anchor: `cmd-slack-reaction-remove`
- Mutates state: `yes`
- Supports dry run: `no`

Remove your reaction from a message

Remove 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.

Example:

```bash
slack reaction remove --channel general --ts 171.0001 --name eyes
slack reaction remove --help
slack reaction remove m1 --name eyes
```

Flags:

- `--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 removal

### `slack resolve`

- Anchor: `cmd-slack-resolve`
- Mutates state: `no`
- Supports dry run: `no`

Resolve a Slack local marker or stored short reference

Resolve 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.

Example:

```bash
slack resolve --help
slack resolve C2H...5FA
slack resolve c1
slack resolve m1
```

### `slack schema`

- Anchor: `cmd-slack-schema`
- Mutates state: `no`
- Supports dry run: `no`

Emit Slack adapter schema hints

Show 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.

Example:

```bash
slack schema
slack schema --help
slack schema message.create --in --json
slack schema message.get --out --json
```

Flags:

- `--in` (bool): Show input schema
- `--input` (bool): Show input schema
- `--out` (bool): Show output schema
- `--schema-output` (bool): Show output schema

### `slack search`

- Anchor: `cmd-slack-search`
- Mutates state: `no`
- Supports dry run: `no`

Search Slack resources

Search Slack resources using the server-side Slack search APIs.

Prefer channel-scoped list/get workflows when you already know the target channel. Use search when you do not know the channel or need broad workspace discovery.
For channel-scoped recovery, use message list --channel <channel> --query <text> --jsonl and pipe the selected item into message get.
Use --json and --jsonl separately; --jsonl is the mode intended for command-to-command item streams.

#### `slack search message`

- Anchor: `cmd-slack-search-message`
- Mutates state: `no`
- Supports dry run: `no`

Search Slack messages

Search 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 <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 <channel> --query <text> --limit 1 --jsonl | slack message get

Do not combine --json and --jsonl; use --jsonl only when feeding another command.

Example:

```bash
slack message list --channel cmdhub-evals-a --limit 10
slack search message
slack search message --channel cmdhub-evals-a --query eval-slack-msg-123 --jsonl
slack search message --query 'from:me release'
slack search message --query 'has:link incident' --limit 20
```

Flags:

- `--channel` (string): Limit search to one channel by using the channel-scoped message list path
- `--query` (string): Search query

### `slack thread`

- Anchor: `cmd-slack-thread`
- Mutates state: `no`
- Supports dry run: `no`

Work with Slack threads

Inspect 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`

- Anchor: `cmd-slack-thread-get`
- Mutates state: `no`
- Supports dry run: `no`

Get a thread and its replies

Get 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.

Example:

```bash
slack message list --channel general --limit 1 --jsonl | slack thread get
slack thread get
slack thread get --channel general --ts 171.0001
slack thread get m1
```

Flags:

- `--channel` (string): Channel id or name
- `--ts` (string): Root message timestamp

### `slack user`

- Anchor: `cmd-slack-user`
- Mutates state: `no`
- Supports dry run: `no`

Work with Slack users

List and inspect Slack users visible to the active token.

#### `slack user get`

- Anchor: `cmd-slack-user-get`
- Mutates state: `no`
- Supports dry run: `no`

Get one user by id or name

Get one Slack user by id, name, short ref, or one piped user item.

Example:

```bash
slack user get
slack user get alice
slack user get p1
```

Flags:

- `--id` (string): User id or name

#### `slack user list`

- Anchor: `cmd-slack-user-list`
- Mutates state: `no`
- Supports dry run: `no`

List users

List active Slack users and cache local user refs such as p1.

Example:

```bash
slack user list
slack user list --include-deactivated
slack user list --json
slack user list --limit 20
```

Flags:

- `--include-deactivated` (bool): Include deactivated Slack accounts

### `slack version`

- Anchor: `cmd-slack-version`
- Mutates state: `no`
- Supports dry run: `no`

Show slack version information

Example:

```bash
slack version --help
```

## Live Examples

### Auth

#### Check current identity

Returns the authenticated user and workspace.

_Example metadata: requires auth; provider state: live._

```bash
slack auth whoami
```

```text
Authenticated as sterne@gmail.com
Field         Value
------------  -----
Workspace     Stochastic Consulting
Workspace ID  {id}
User          philip
User ID       {id}
Email         sterne@gmail.com

Next steps:
- Capabilities:       slack capabilities
- List conversations: slack conversation list --limit 10
- List messages:      slack message list --channel general --limit 10
```

### Channels

#### List channels

Lists accessible channels and assigns short channel refs.

_Example metadata: requires auth; provider state: live._

```bash
slack channel list --limit 5
```

```text
REF  TITLE           WHEN
c1   general         1.776093411299e+12
c2   random          1.724289881022e+12
c3   announcements   1.771492396484e+12
c4   friendscompete  1.771492396541e+12
c5   africanbank     1.771492396748e+12

Next steps:
- Open:         slack channel get c1
- Channels:     slack channel list
- Messages:     slack message list --channel general --limit 10
- Capabilities: slack capabilities
```

#### Get a channel

Returns channel name, topic, member count, and purpose.

_Example metadata: requires auth; provider state: live._

```bash
slack channel get c1
```

Error:

```text
NOT_FOUND: channel not found

Next steps:
- Channels: slack channel list --limit 10
- Messages: slack message list --channel general --limit 10
- Help:     slack --help
exit status 50
```

### Messages

#### List channel messages

Lists recent messages in the eval channel.

_Example metadata: requires auth; provider state: live._

```bash
slack message list --channel cmdhub-evals-a --limit 3
```

```text
REF  TITLE
m1   This message was deleted.
m2   This message was deleted.
m3   This message was deleted.

Next steps:
- Open:         slack message get m1
- Channels:     slack channel list
- Messages:     slack message list --channel general --limit 10
- Capabilities: slack capabilities
```

#### Get a message

Returns the full message text and any thread context.

_Example metadata: requires auth; provider state: live._

```bash
slack message get m1
```

Error:

```text
INVALID_ARGUMENT: missing message selector

Next steps:
- Channels: slack channel list --limit 10
- Messages: slack message list --channel general --limit 10
- Help:     slack message --help
exit status 2
```

### Search

#### Search messages

Full-text search across all accessible channels.

_Example metadata: requires auth; provider state: live._

```bash
slack search message --query eval
```

```text
Messages matching "eval"
REF  CHANNEL                        TS                 AUTHOR     TEXT
m1   #cmdhub-evals-a ({id})  {id}.203869  {id}  eval-slack-post-delete-grow-natural-civil reply message
m2   #cmdhub-evals-a ({id})  {id}.382739  {id}  eval-slack-post-delete-term-beginning-hate reply message
m3   #cmdhub-evals-a ({id})  {id}.412719  {id}  eval-slack-post-delete-towards-favorite-growing reply message
m4   #general ({id})           {id}.266959  {id}  eval-slack-post-delete-missing-fast-wanted reply message
m5   #general ({id})           {id}.702329  {id}  Source event eval-agent-pipe-gcal-slack-review-table-comes: Pipe Slack source event eval-agen...
m6   #cmdhub-evals-a ({id})  {id}.994769  {id}  eval-slack-post-delete-related-wish-thing reply message
m7   #cmdhub-evals-a ({id})  {id}.347989  {id}  eval-slack-post-delete-word-hope-created reply message
m8   #cmdhub-evals-a ({id})  {id}.139219  {id}  Event: Pipe Slack source event eval-agent-pipe-gcal-slack-{id} | Description: Post a Sl...
m9   #cmdhub-evals-a ({id})  {id}.069399  {id}  Event: Pipe Slack source event eval-agent-pipe-gcal-slack-{id} | Summary: Pipe Slack so...
m10  #cmdhub-evals-a ({id})  {id}.991189  {id}  Pipe Slack source event eval-agent-pw...
m11  #cmdhub-evals-a ({id})  {id}.805279  {id}  eval-slack-post-delete-{id} root message
m12  #cmdhub-evals-a ({id})  {id}.330609  {id}  Pipe Slack source event eval-agent-pipe-gcal-slack-{id}
m13  #cmdhub-evals-a ({id})  {id}.777579  {id}  Pipe Slack source event eval-agent-pipe-gcal-slack-{id}: roadmap risk reviewed, launch ...
m14  #cmdhub-evals-a ({id})  {id}.913129  {id}  Pipe Slack source event eval-agent-pipe-gcal-slack-{id}: roadmap risk reviewed, launch ...
m15  #cmdhub-evals-a ({id})  {id}.011309  {id}  Pipe Slack source event eval-agent-pipe-gcal-slack-{id}: roadmap risk reviewed, launch ...
m16  #cmdhub-evals-a ({id})  {id}.810639  {id}  Post a Slack status update for eval-agent-pipe-gcal-slack-{id}: roadmap risk reviewed, ...
m17  #cmdhub-evals-a ({id})  {id}.769679  {id}  Pipe Slack source event eval-agent-pipe-gcal-slack-{id}
m18  #cmdhub-evals-a ({id})  {id}.864679  {id}  Pipe Slack source event eval‑...

Next steps:
- Open:           slack message get m1
- List channel:   slack message list --channel {id} --limit 10
- Search example: slack search message --query roadmap --limit 10
```

### Users

#### List workspace members

Lists workspace members and assigns user refs.

_Example metadata: requires auth; provider state: live._

```bash
slack user list --limit 5
```

```text
REF  TITLE          WHEN
p1   slackbot       0
p2   philip         1.603991453e+09
p3   carlscheffler  1.569031072e+09
p4   slack1         1.530883443e+09

Next steps:
- Open:         slack user get p1
- Channels:     slack channel list
- Messages:     slack message list --channel general --limit 10
- Capabilities: slack capabilities
```
