Your experience while developing next generation Slack apps is largely governed by the SDKs and the CLI. These tools change as the platform changes, and we release new versions regularly. Subscribe to be notified of updates, and let us know how we're doing.

v2.9.1 (September 21st, 2023)

  • We now order functions by callback ID for easier sorting when you call the function distribute command.
  • We've formatted and streamlined the install script as well as some of our error descriptions for a smoother, more pleasant experience.

Minimum CLI version (September 19th, 2023)

Starting today, the Slack API's minimum required CLI version for Enterprise Grid is changing from v1.18.0 to v2.9.0. If you attempt to log in with an older version, you'll receive a cli_update_required error from the Slack API.

Run slack upgrade to get the latest version. Refer to install & authorize for more details about installing the Slack CLI.

v2.9.0 (September 8th, 2023)

We now support Slack's new look & feel! For the best experience, we recommend upgrading to CLI version 2.9.0+.

  • Starting on Sept 19th, Slack CLI v2.9.0 is required to login to Slack Enterprise. For everyone else, Slack CLI v1.18.0 is the minimum version.
  • You can now specify which workspace within an Enterprise Grid organization to grant your app access to when you deploy and install your app by using the --org-workspace-grant flag.
  • Sometimes additional admin approval is needed before your app can be installed. We now notify you that pending app approval/denial notifications will come from Slackbot.
  • We added more workflow events to the CLI for improved troubleshooting.
  • We updated the output of our --info flag for a more streamlined experience.
  • You can now skip the workspace selection dialog when you supply an app id via --app and an active token via --token flags.

v2.8.0 (August 24th, 2023)

  • Improved Deno dependency caching.
  • app list no longer requires authentication, and will instead display an unknown app status in cases where no authentication is found.
  • The run, deploy, and delete commands will now resolve organization-level authentication in cases where workspace-level authentication is missing.

v2.7.0 (August 10th, 2023)

  • Added a slack trigger list --type=<string> flag to only list triggers of a specific type:
    • For example, slack trigger list --type=shortcut
    • Supported flag values for --type=<string> are all, shortcut, event, webhook, scheduled, and external.
  • Added flags to provide values for many interactive prompts. Learn more about the flags available by adding --help to any command.
    • For example, slack external-auth add-secret --provider github --secret my-secret-value
  • Updated slack app list to improve displaying apps that you are not authenticated to access:
    • Local apps now display a (local) label
    • Install status is now shown as Status: Unknown
  • Removed an incorrect timestamp found in the Slack debug log file.
  • The Deno SDK v2.2.0 now displays an error in your editor when you accidentally register duplicate primary keys for workflow, function, datastore, customType, event or provider. This helps prevent unexpected behavior at runtime.

v2.6.0 (July 27, 2023)

  • The .github directory will no longer be included in new projects created from one of our sample apps.
  • Updated our support email to - email us for assistance if your app returns an internal error code.
  • Using the slack app list command now returns Status: Installed instead of Status: Unknown for an installed app.
  • When using the CLI in a non-interactive environment, such as in a CI pipeline, selection prompts will error and suggest a flag alternative to use instead of hanging indefinitely.
  • Trigger generation prompts will be automatically skipped when using slack run or slack deploy in a non-interactive environment, regardless of how many triggers might exist.
  • Clarified admin approval requirements when installing to a workspace that has Admin-Approved Apps enabled.
  • Socket connections are now gracefully closed when ending a slack run session.
  • Improved typeahead suggestions for the type field of functions and datastores were made in the Deno SDK.

v2.5.1 (July 10, 2023)

  • Fixed a bug to now properly delete the selected app when uninstalling from a workspace.

v2.5.0 (June 29, 2023)

  • Added a confirmation message if you decide not to delete an app when using the slack app delete command.
  • Added a --hide-triggers flag to slack run and slack deploy to prevent retrieving and displaying application triggers.
  • Added a warning to listed trigger info that Slack Connect channels do not support event triggers.
  • Added app collaborators to listed trigger info.
  • Added support to limit paginated results with the trigger list --limit <n> command.
  • Added a prompt for whether you would like to include/exclude app collaborators into the named entities list if you set your trigger's ACL to named_entities. The include-app-collaborators flag will allow you to skip this prompt.
  • Updated the slack activity command to support datastore event and error logs. For more information, refer to logging.
  • When the --token flag is set, background checks for updates will now be automatically disabled.
  • Added support to fall back to a curl install of deno if deno upgrade should fail.
  • The slack logout command now accepts the --workspace flag.
  • We removed the --show-triggers flag from the slack run command, as the command now displays all of your app's triggers and their types.

Deprecation of CLI v1.17.0 and below (June 28, 2023)

Breaking change

Beginning June 28, version v1.17.0 and below of the CLI is deprecated. We recommend reinstalling the CLI to get the latest version. Learn more.

v2.4.0 (June 15, 2023)

  • Updated the Linux/macOS installation script to support a CLI version param, -v.
  • Added a -d flag to bypass Deno installation in the Linux/macOS installation script.
  • Updated the Windows installation script to include Alias, Version, SkipDeno, and SkipGit flags.
  • Suggest Windows users open a new terminal after installation to add the Slack CLI to the user's environment PATH.
  • Bumped minimum required Deno version to 1.31.1.
  • Replaced the workspace command with a new app command.
  • Made visible the config-dir global flag.
  • Deprecated auth login's auth flag in favor of token.
  • Updated app list command to display installation status.

v2.3.0 (June 1, 2023)

  • The external-auth remove command now allows you to select a token for deletion.
  • The new external-auth select-auth command allows you to select a unique auth for each of the workflows in an app. This command is mandatory when using new in-code workflows that have a step containing credentialSource DEVELOPER; that is, every time an in-code workflow is created, this command must be called after the external-auth add command.
  • The slack auth token and slack auth revoke commands allow you to manage (create and delete) service tokens.
    • The slack auth token command allows you to get the slackauthticket and to copy and paste it into your workspace to exchange for the service token.
    • The service token will not be saved to your credentials.json file; instead, it is presented in the prompt for you to copy and paste to your CI/CD pipelines.
    • Once you obtained a service token, you can use slack login --auth <your-service-token> to authorize your Slack CLI.
The service token will not conflict with your regular authentication token; you can continue using your regular authentication token within the Slack CLI while using the service token for your CI/CD pipelines.
  • The new global --token <token> flag allows you to pass the service token used by requests requiring authentication. For example:
    • Install an app: slack install --token <your-service-token>
    • Create a trigger: slack trigger create --token <your-service-token> --app deployed --trigger-def triggers/trigger_def_file.ts
    • Deploy an app: slack deploy --token <your-service-token>
  • Added support for a global --experiment [name,name,...] flag.

v2.2.0 (May 4, 2023)

  • trigger info now also shows who can run the trigger.
  • Added the --no-color flag, which removes all ANSI sequences for color as well as emojis, giving you plain text output from the CLI that's perfect for piping to a text file.
  • The datastore query command now supports a cursor argument to help you paginate your results the way you want.
  • Trigger operations will now let you know when an invalid trigger file is being ignored.
  • Improved error reporting and help text.

General availability (April 24, 2023)

Today we're announcing that the next generation Slack platform–which provides a faster, more flexible way to build automations on top of Slack–is generally available to developers. The platform's overhauled architecture gives developers more ways to build, code, and ship custom apps and workflows more quickly and easily in an environment that's both secure and compliant. Read the announcement or follow the Quickstart to get started today!

v2.1.0 (April 20, 2023)

CLI enhancements

  • Updated login flow instructions to be clearer for new developers.
  • Improved formatting in the trigger_execution log for greater readability.
  • Improved Windows installation script to have more specific error messaging.
  • Updated the slack doctor command to display the local git version.
  • Hid a select few flags that appear when using the slack help command, but not to worry! Those hidden commands are still visible while using slack help -v.
  • Refined text formatting for greater accessibility.

Bug fixes

  • Datastore methods now take an app selection prompt.
  • Remedied a CLI runtime error that would occur when running slack help deno without any other arguments.

v2.0.0 (April 6th, 2023)

  • Added support for TTY devices to remove color and emoji when redirecting output.
  • Added displayed timestamps to the --verbose flag.
  • Simplified the create experience for developers from installation to deployment.
  • Added a hint when running trigger create or trigger list for developers to invite their app to a channel to receive events, and formatted outputs when displaying trigger information.
  • Added support for the error code message_limit_exceeded. The error code is included in the following endpoints when a free team has reached their message limit:, chat/postEphemeral, chat/postMessage, chat/scheduleMessage, chat/shareMessage, files/share, and drafts/create. For more information, refer to Usage limits for free workspaces.
  • Renamed the slack cloud command to the slack platform command. For more information, refer to commands.
  • Renamed (dev) with (local) for local apps in the workspace list.
  • Added support for Windows users to install the Slack CLI, Deno, Git, and VSCode with the Deno extension. For more information, refer to the Quickstart.
  • Renamed the slack workspace uninstall command to slack workspace delete.
  • Improved the user experience when using slack login --auth <string> to log in.
  • Added the shorthand -a for the --app flag.
  • Removed the slack auth info command, as the pertinent information is found by using the slack auth list command.
  • Added a slack samples command, which will list the available sample app templates you can use to create a new app.
  • Removed git as a required dependency of installing sample apps.

v1.21.0 (March 23rd, 2023)

CLI updates

  • Streamlined trigger access command to bypass prompts with flag values, as well as an updated experience when no trigger files are found, in which case the user is directed to Create a link trigger with the CLI.
  • Added the open-form-response export command, which generates a CSV of OpenForm responses.
  • Added support for a global --app <id|env> flag, which replaces the --local-run flag.

Other enhancements

  • Changed the default manifest function_runtime to be undefined instead of slack.
  • Updated local app name suffix to local (from dev).

v1.20.0 (February 23rd, 2023)

New functionality

  • Added new datastore update command. Where the put datastore command replaces the entire record (matching what you might expect from an HTTP PUT call), the new update command allows for field-level changes, leaving unspecified properties unchanged (matching what you might expect from an HTTP PATCH call).
  • Custom trigger file paths can now be declared in slack.json with the config.trigger-paths property.
  • Using either trigger create or trigger update now provides a file selection prompt when no file is specified.
  • When executing deploy, run, or env commands, you can now use the --workspace (-w) flag to specify a target workspace. If omitted, the CLI will prompt you to select from your currently authorized workspaces. Ensure your app is authorized into your target workspace with slack auth list; if you don't see your target workspace, create a new authorization with slack login.


  • The activity command now formats workflow_bot_invited event types.
  • We've removed the warning for outgoing domains for a lighter terminal experience.
  • Added information about token revocation in the external-auth remove command.
  • Added resolution suggestions for the invalid_challenge error.
  • Added upcoming breaking changes announcement when using deploy and run commands. The upcoming breaking changes are outlined at the end of this changelog.
  • Elided certain text hints in cases where they aren't necessary.
  • Cleaned up the output of create command to better focus on next steps.

Upcoming maintenance window

On March 13th, 2023, between 1pm and 5pm PST, we'll be making some security improvements behind-the-scenes on our end; no action is required from you. During this time, you may experience some lag or downtime with your functions deployed to Slack's managed infrastructure.

Upcoming breaking changes

The following breaking changes will ship April 6, 2023. Before April 6th, please update your app in accordance with the changes outlined below to ensure that it continues to work as expected.

Third-party authentication

  • Instead of passing an empty object to the functions OAuth2 input parameter to define what token type should be used, you’ll need to use a new credential_source property to specify which user’s token should be selected or requested during workflow execution. For example:
// OLD
const sampleFunctionStep = SampleWorkflow.addStep(SampleFunctionDefinition, {
  user: SampleWorkflow.inputs.user,
  googleAccessTokenId: {},

// NEW
const sampleFunctionStep = SampleWorkflow.addStep(SampleFunctionDefinition, {
  user: SampleWorkflow.inputs.user,
  googleAccessTokenId: {
    credential_source: "DEVELOPER" // Add this by April 6th, 2023


  • datastore:read and datastore:write scopes will no longer be auto added to your app manifest botScopes.
  • The apps.datastore.put method will now overwrite the entire datastore item instead of only overwriting the individual fields included in the call. Use apps.datastore.update to overwrite individual fields.
  • Datastore items' primary_key is the only required attribute, all other attributes will be treated as optional. Unhandled optional attributes may cause TypeScript errors in your code. If you'd like to migrate to optional attributes ahead of time, you can cast a DatastoreItem:
import { DatastoreItem } from "deno-slack-api/types.ts";

 const response = await client.apps.datastore.get<typeof SampleObjectDatastore.definition>({
    datastore: "SampleObjects",
    id: sampleObject,
const item = resp.item as DatastoreItem<
  typeof SampleObjectDatastore.definition

resp.item.original_msg // is still required, but
item.original_msg // is now optional

Interactivity payloads

  • The response_url property will no longer be included in Block Kit interactivity action & view_submission payloads that are routed to function handlers. The Slack API client provided to these handlers can call Slack’s messaging APIs directly.

Slack functions

  • The new ReplyInThread function provides a new way to reply to messages in thread. Instead of passing the message you want to reply to as the thread_ts input parameter of SendDM or SendMessage, now you can pass that message into the message_context input parameter of the ReplyInThread function.
  • InviteUserToChannel has two new optional input parameters: user_ids, an array of user IDs, and channel_ids, an array of (you guessed it) channel IDs. The single value versions, user_id and channel_id, will be removed on April 6th, 2023.
  • AddUserToUsergroup and RemoveUserFromUserGroup have one new optional input parameter: user_ids, an array of user IDs. The user_id input will be removed.

v1.19.0 (February 9th, 2023)

Slack CLI

  • The Slack CLI installer now safeguards overwriting other binaries or programs named slack that you may have in your system.
  • You can now update the Slack CLI without needing to be logged into a workspace.
  • Logging out with slack logout now revokes auth and refresh tokens.
  • App selection now prompts for a workspace first, then the app's environment (local or deployed). Environment-specific commands such as slack run, slack deploy, or slack collaborator list prompt only for your workspace choice and then select the environment automatically depending on the command.

Trigger updates

  • You can now grant and revoke trigger access for specific workspaces and organizations.
  • After deploying with slack deploy, a prompt to generate a trigger from a trigger definition file will appear if no triggers exist in this environment.
  • When running slack triggers list, each trigger's creation and last updated times are now included.
  • We now ensure that triggers will not be created if their parameter values are missing or empty.
  • We improved the error messages with suggested remediation steps if trigger creation fails with workflow_not_found.

Other changes

  • The Deno Slack SDK added the DefineProperty object wrapper to bring accurate typing to nested object properties and parameters.
  • New message_ts and message_context types were added to the Deno Slack SDK for stronger typing when handling messages.
  • Format properties email and url now exist on the Slack.types.string type, helping validate the inputs of function, forms, and workflows.
  • The client.apps.external.auth.get method was added to the Deno Slack API for fetching external auth tokens with typeahead support.
  • Errors will be raised if a function module doesn't export a function by default.

v.1.18.0 (January 26th, 2023)

Important changes

  • As announced previously, you now must specify all domains you'll use for remote HTTP requests in the outgoingDomains property of your app's manifest.
  • The existing login process has been deprecated in favor of a process that includes a challenge step. Now, when a you use slack login and paste the /slackauthticket command into your workspace, instead of directly sending you back to the CLI, Slack will issue a verification code in the Slack client which you need to input into your CLI before you can complete the login. This does not break login for older versions. Additionally, existing logins in your credentials.json file are not affected.

Other changes

  • Now when you use the slack run command, you will be prompted to generate a trigger. This prompt will not occur when running slack deploy.
  • Improved error message for schema_compatibility_error on datastores_deleted.
  • Updated datastore command help text to be consistent with website documentation.
  • Added support for channel entities in trigger access control lists. You can now pass a channel_id to grant or revoke access to triggers.
  • Updated all datastore command examples to not require the app_id parameter, as the App Selector Prompt automatically adds the app_id to the query.
  • You will now be prompted for missing flags when using slack env add and slack env remove, instead of receiving a pesky error. When slack env add prompts for the secret value, it uses a password-like input to hide the input value from the terminal screen to remove possible leakages of these values from the terminal history.
  • Added a safeguard for overwriting other binaries named 'slack'.
  • Added an error message when using slack create to create from a template if Git is not installed.
  • Added a helpful remediation message to channel_not_found error.