Skip to content

v0.0.1

Choose a tag to compare

@github-actions github-actions released this 13 Nov 18:15
· 21 commits to master since this release
18faacc

[0.0.1] - 2026-11-13

Added

  • Status's account (teamId, userId, enterpriseId), from auth.test. Thanks to @domeevans (#18).
  • The tools RPC's status method (slack_status, allowed at every access). Thanks to @domeevans (#18).
  • slack_mark_read / mark_read (write): Slack's conversations.mark. Needs a :write scope; SCOPE_MISSING without it. Thanks to @domeevans (#18).
  • oauth.auth_server_metadata_url, passed unchanged into the slack server's oauth block, so a host with an https: callback can keep Slack's client secret on its own sign-in service. OpenCode uses that document in place of Slack's for the whole sign-in; SECURITY.md says what its server controls. Without it the entry is unchanged.
  • The jelly access setting declares its choices (needs a jelly that includes app#1301).
  • The README and docs/configuration.md say that Slack refreshes without a secret only for desktop redirects, and answers a refused refresh with HTTP 200 bad_client_secret.

Changed

  • The plugin now reads the Slack token, in src/slack-api.ts only, to call auth.test and conversations.mark, and never stores, logs or returns it.

Known limits

  • Slack's server and Slack's tools. The plugin adds Slack's hosted MCP server and no wrapper tools; its only Web API calls, auth.test and conversations.mark, are tested against a fake Slack, not a live one. Tool schemas, results (Markdown text, not JSON) and rate limits are Slack's.
  • The default access is all. Agents can then read private channels and files, and send or change things, without asking. Set access to "ask-changes" or "read-only" to restrict it; see Permissions.
  • Tool classes are set by hand. A tool Slack adds later runs under the namespace rule (allowed at all, asks at ask-changes, denied at read-only) and is not a script method until the plugin classifies it. /slack-status names such tools.
  • mark_read needs im:write, channels:write or the like, not in the default scopes.
  • Jelly. access needs a Jelly with app#1301.
  • Private search needs scopes the default sign-in lacks. With the default scopes, Slack answers missing_scope for it. See the scope table.
  • Tested on OpenCode 2.2.3, 2.2.4, 2.2.5 and 2.2.6 only. Other releases in >=2.2.3 <2.3.0 run untested.
  • A script's calls are not recorded in the session. Slack's audit logs record them.
  • Names keep the doubled prefix. A permission action is the tool's full name, such as slack_slack_search_public. Renaming it would break saved rules.
  • Updates are not automatic for a Git install, and opencode plugin update and opencode plugin check do not work on one: to move to a newer release, remove the old entry and add the new tag.