Skip to content

Releases: abigotado/slack-agent-cli

slack-agent-cli v0.3.2

Choose a tag to compare

@github-actions github-actions released this 22 Oct 14:39
Immutable release. Only release title and notes can be modified.
6d94755

slack-agent-cli v0.3.2

Thread reads now handle oversized native Slack pages within the existing
100-message transport cap. Every output page contains at most the requested
limit (50 by default), includes the parent only on the first page, and resumes
overflow before advancing Slack's cursor. Follow meta.next_cursor until it is
absent; pages may contain fewer messages than the limit. Repeated timestamps
are filtered. Pagination is not a snapshot of concurrent thread changes.

The regression fixture returns all 69 messages as 50 plus 19 without an explicit
--limit, with no duplicates. Legacy bound thread cursors remain accepted.
The newest-first native-page fixture returns 50 plus 1 plus 18, also preserving
all 69 messages. Native ranges may move towards older or newer replies; overlap
or a direction reversal is a response error rather than a silently skipped range.
Its recovery hint directs callers to restart once from the first page without
--cursor; if it happens again, stop and report it.
History/list bounds and inclusive attachment-proof bounds are unchanged.

--thread-ts requires the parent timestamp. Reply timestamps return an
actionable THREAD_PARENT_REQUIRED input error at exit 2. Malformed thread
pages and unencodable continuations fail with SLACK_RESPONSE_INVALID at exit 1.
The JSON envelope remains v1 with the same schema.

Authentication recovery guidance no longer guesses expiry, revocation, or
clipboard contents from SLACK_AUTH_REJECTED. Import credentials through the
operator's hidden terminal input and review policy rebinding after replacement.

Go 1.26.10 or newer is required for the certificate verification security fix.

brew update
brew upgrade abigotado/tap/slack-agent-cli

Or install from source:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.3.2

The annotated release tag triggers CI to publish the checksummed source bundle,
release-manifest.json, and SHA256SUMS.

slack-agent-cli v0.3.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 16:50
Immutable release. Only release title and notes can be modified.
4931351

slack-agent-cli v0.3.1

Paginated reads now work without an explicit --limit: messages thread,
messages history, and conversations list default to 50. Explicit values
outside 1-100 still return INVALID_LIMIT and exit 2. Thread results retain
the parent and replies; follow meta.next_cursor for additional pages.

The Slack Skill now reuses a compatible established profile or selects the one
unambiguous profile whose local workspace/identity and current read policy
match an exact-conversation read. It proceeds without repeatedly asking for a
profile name. Explicit profiles remain authoritative; missing access or multiple
eligible accounts need input. CLI selectors, policy boundaries, and write
confirmation remain explicit.

Every ok:false response exits nonzero. API, auth, and transport failures now
exit 1; usage/input errors exit 2. Local recovery statuses 3, 4, 7, 8, and 9
remain, especially ambiguous writes at exit 9. Exits 5 and 6 are retired from
process output. Inspect error.code and hint for recovery, honor read backoff,
and never retry a write automatically. JSON envelope version 1 and its schema
are unchanged, including existing error codes, messages, and hints.

Both v0.2.3 and v0.3.0 already exited 2 for INVALID_LIMIT. A successful jq
consumer can mask that failure in a shell pipeline. Use set -o pipefail and
check .ok before treating .data as a message list.

brew update
brew upgrade abigotado/tap/slack-agent-cli

Or install from source with Go 1.26.9 or newer:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.3.1

The annotated release tag triggers the verified CI source release, producing a
checksummed source archive, release-manifest.json, and SHA256SUMS.

slack-agent-cli v0.3.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 19:17
Immutable release. Only release title and notes can be modified.
1be886e

slack-agent-cli v0.3.0

Read and download files attached to messages in allowlisted Slack conversations,
including videos and attachments in thread replies.

Message history and thread results now include a typed files array. Use the
file ID and containing message timestamp to inspect or download an attachment:

slack-agent-cli files get F123 --profile NAME \
  --conversation-id C123 --message-ts 1234567890.123456
slack-agent-cli files download F123 --profile NAME \
  --conversation-id C123 --message-ts 1234567890.123456 \
  --output /absolute/path/video.mp4

For a reply attachment, include --thread-ts PARENT_TS. Each command verifies
the exact message attachment and the profile's read policy before files.info.
Downloads support hosted files in the selected workspace, up to 250 MiB within
two minutes. External files, remote-workspace downloads, query URLs and redirects
are rejected. Existing local paths are never overwritten; output remains a v1
JSON envelope with untrusted metadata, the saved path, byte count and SHA-256.

Existing installations

All five provisioning manifests now include files:read. Updating the binary
alone does not grant this Slack scope. The operator must reauthorize/reinstall
the app with the new scope and import its token with auth login for the exact
profile. Re-login changes credential generation and invalidates old policies.

Review the full read target set, preview it with auth allow-reads set --reset-stale-policy --dry-run, and apply the exact set with --yes. This clears
old write targets, which must be rebuilt separately. A channel absent from the
allowlist still needs explicit authorization.

Install

brew update
brew upgrade slack-agent-cli

Or install from source with Go 1.25.14 or newer:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.3.0

The release includes a deterministic source archive, release-manifest.json,
and SHA256SUMS. The machine envelope remains version 1; all file fields,
commands, limits and the files.info route are additive.

Enterprise Grid E-owned file download paths are currently unsupported; the
validated file path must belong to the selected T-workspace. Downloads use
atomic no-overwrite rename on macOS/Linux and require filesystem support.
Local write errors and unsupported response content are non-retryable; cleanup
failures preserve the primary error and add a safe hint.

slack-agent-cli v0.2.3

Choose a tag to compare

@abigotado abigotado released this 04 Sep 18:14
Immutable release. Only release title and notes can be modified.
f346da9

slack-agent-cli v0.2.3

This patch release adds the canonical user-only workspace profile for one
operator acting through their own Slack identity.

The user-workspace-message-write manifest supports allowlisted public
channels, private channels, one-to-one direct messages, group direct messages,
and explicitly confirmed plain-text sends. Its user scopes are limited to
channels:history, channels:read, groups:history, groups:read,
im:history, im:read, mpim:history, mpim:read, users:read, and
chat:write; it has no bot, search, files, reactions, admin, event, redirect,
or chat:write.public capability.

Replacing a profile credential now requires an explicit stale-policy rebind.
That transition replaces the read allowlist and drops all prior write targets;
writes must then be explicitly rebuilt. Direct-message preflight revalidates
the exact other participant and fails closed on cross-workspace or incomplete
identity data.

Existing guarantees remain unchanged: every network call requires an explicit
profile, content reads stay bounded and exact-ID allowlisted, and writes remain
one-shot after local dry-run receipt and exact confirmation.

Install or upgrade with Homebrew:

brew update
brew upgrade slack-agent-cli

Or install from source with Go 1.25.14 or newer:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.2.3

slack-agent-cli v0.2.2

Choose a tag to compare

@abigotado abigotado released this 03 Sep 20:52
Immutable release. Only release title and notes can be modified.
3006ae9

slack-agent-cli v0.2.2

This patch release fixes profile login with valid Slack bot and user tokens.

Slack's documented successful auth.test response represents user as a
string. Earlier releases reused the object-valued users.info response type,
so a valid token reached Slack successfully but failed local JSON decoding
before the profile could be committed. The runtime now uses a dedicated typed
auth.test envelope and includes the official bot response shape in its
regression tests.

Authentication diagnostics also gain a fixed, non-sensitive error.stage
field. Existing error codes, messages, and recovery-oriented exit codes remain
unchanged. Token input now applies one bounded printable-ASCII contract to both
hidden controlling-terminal and stdin paths.

Credentials remain stored only in the native macOS Keychain. Tokens are not
written to argv, environment variables, registry files, logs, errors, or
output.

Install or upgrade with Homebrew:

brew update
brew upgrade slack-agent-cli

Or install from source with Go 1.25.14 or newer:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.2.2

slack-agent-cli v0.2.1

Choose a tag to compare

@abigotado abigotado released this 02 Sep 21:34
Immutable release. Only release title and notes can be modified.
16e089c

slack-agent-cli v0.2.1

This patch release republishes the v0.2 feature set with the complete immutable
source release bundle. Runtime behavior is unchanged from v0.2.0.

The v0.2 feature set adds a safe operator workflow for creating and connecting
a Slack app without widening the agent-facing Slack API:

  • a separately installable slack-app-provisioning Skill for Codex and Claude
    Code pins official Slack CLI 4.7.0, its hook dependency, and exact manifests;
  • the all-channels manifest grants bot access to public and private channels
    through channels:* and groups:*, while intentionally excluding DMs,
    group DMs, chat:write.public, auto-join, and raw API access;
  • interactive profile setup reads one bounded hidden token directly from the
    controlling terminal with signal-safe auth login --token-tty;
  • Skill installation accepts a closed explicit selector while retaining
    slack as the compatible default.

Slack still exposes private channels only after the bot is invited. Runtime
reads and writes remain restricted by exact conversation-ID policies bound to
profile identity and credential generation.

Install with Homebrew:

brew update
brew upgrade slack-agent-cli

Or install from source with Go 1.25.14 or newer:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.2.1

slack-agent-cli v0.1.0

Choose a tag to compare

@abigotado abigotado released this 02 Sep 14:26
Immutable release. Only release title and notes can be modified.
c8325b9

slack-agent-cli v0.1.0

The first public release provides a provider-neutral Slack boundary for agents:

  • every network call names an exact profile; there is no mutable default;
  • credentials stay in macOS Keychain and are bound to verified workspace and
    account identity;
  • the Slack surface is a fixed set of typed operations with bounded responses;
  • conversation content is allowlisted and marked untrusted;
  • plain-text message sends require a local dry-run receipt and exact
    confirmation, run once, and expose recovery-oriented exits;
  • one embedded Skill installs identical guidance for Codex or Claude Code.

Runtime support is macOS. Linux is covered for source build and tests but has no
credential backend in v0.1. Windows is deferred.

Install from source with Go 1.25.14 or newer:

go install github.com/abigotado/slack-agent-cli/cmd/slack-agent-cli@v0.1.0