<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Slack Developer Docs Blog</title>
        <link>https://docs.slack.dev/changelog</link>
        <description>Slack Developer Docs Blog</description>
        <lastBuildDate>Tue, 30 Jun 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Introducing the Agent messaging experience]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/30/agent-messages-tab</link>
            <guid>https://docs.slack.dev/changelog/2026/06/30/agent-messages-tab</guid>
            <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Agents now support a new messaging experience, set by your app manifest:]]></description>
            <content:encoded><![CDATA[<p>Agents now support a new messaging experience, set by your <a class="" href="https://docs.slack.dev/reference/app-manifest#features">app manifest</a>:</p>
<ul>
<li class=""><strong>Agent messaging experience</strong> (<code>agent_view</code>): agent conversations now look &amp; feel the same as a regular direct message. Gone is the history tab and new chat button. Instead, all of your conversations appear in the standard message tab and your agent can respond in-thread.</li>
<li class=""><strong>Assistant messaging experience</strong> (<code>assistant_view</code>): agent conversations happen in separate Chat and History tabs.</li>
</ul>
<p>New apps can only use the Agent messaging experience. Apps that already use the Assistant messaging experience can continue to use it for now, but <code>assistant_view</code> will eventually be deprecated, and we'll ask existing apps to migrate to <code>agent_view</code>.</p>
<p>The Agent messaging experience changes the following:</p>
<ul>
<li class=""><strong>Knowing when a user opens a DM</strong>: rely on the <a class="" href="https://docs.slack.dev/reference/events/app_home_opened"><code>app_home_opened</code></a> event to know when a user has actively opened a DM with your app. The <a class="" href="https://docs.slack.dev/reference/events/assistant_thread_started"><code>assistant_thread_started</code></a> event no longer indicates this. See <a class="" href="https://docs.slack.dev/ai/developing-agents#migrating">Developing an agent</a> for details.</li>
<li class=""><strong>Suggested prompts</strong>: <a class="" href="https://docs.slack.dev/reference/methods/assistant.threads.setSuggestedPrompts">suggested prompts</a> now live at the top of the Messages tab instead of within threads, and the <code>thread_ts</code> argument is no longer required when <code>agent_view</code> is enabled.</li>
<li class=""><strong>Continuing a conversation</strong>: after a user sends a new message, calling the <a class="" href="https://docs.slack.dev/reference/methods/assistant.threads.setStatus"><code>assistant.threads.setStatus</code></a> API method on that thread automatically opens the thread to keep the conversation going.</li>
</ul>
<p>The <a class="" href="https://docs.slack.dev/changelog/2026/06/30/slack-cli/">Slack CLI v4.4.0</a>, Python SDK v3.43.0, and @slack/web-api@7.18.0 are required to access the Agent View feature.</p>
<p>Already have an app using the Assistant messaging experience? Follow the <a class="" href="https://docs.slack.dev/ai/developing-agents#migrating">migration checklist</a> to move to the Agent messaging experience. Read more in the guide to <a class="" href="https://docs.slack.dev/ai/developing-agents">developing agents</a>.</p>]]></content:encoded>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v4.4.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/30/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/06/30/slack-cli</guid>
            <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 4.4.0 of the Slack CLI is here!]]></description>
            <content:encoded><![CDATA[<p>Version <code>4.4.0</code> of the Slack CLI is here!</p>
<ul>
<li class="">The Slack CLI now supports the <code>features.agent_view</code> app manifest property to enable the new <em>Agent</em> experience.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
        <item>
            <title><![CDATA[New Block Kit container block]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/29/block-kit-container-block</link>
            <guid>https://docs.slack.dev/changelog/2026/06/29/block-kit-container-block</guid>
            <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The container block is now available for Block Kit use.]]></description>
            <content:encoded><![CDATA[<p>The <a class="" href="https://docs.slack.dev/reference/block-kit/blocks/container-block">container</a> block is now available for Block Kit use.</p>
<p>For more details about building with Block Kit, check out our <a class="" href="https://docs.slack.dev/block-kit/">Block Kit overview</a>!</p>]]></content:encoded>
            <category>New Feature</category>
            <category>Block Kit</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v4.3.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/18/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/06/18/slack-cli</guid>
            <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 4.3.0 of the Slack CLI is here!]]></description>
            <content:encoded><![CDATA[<p>Version <code>4.3.0</code> of the Slack CLI is here!</p>
<ul>
<li class="">The <code>slack create</code> command now accepts the <code>--app</code> flag to scaffold a project and automatically link it to an existing app.</li>
<li class="">The <code>slack external-auth add-secret</code> command is now available to all apps, not just Slack-hosted apps.</li>
<li class="">The Slack CLI now supports <code>mcp_server</code> manifest fields for <a class="" href="https://docs.slack.dev/ai/slackbot-mcp-client/">connecting MCP servers to the Slackbot MCP Client</a>.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
        <item>
            <title><![CDATA[Announcing the Slackbot MCP Client]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/18/slackbot-mcp-client</link>
            <guid>https://docs.slack.dev/changelog/2026/06/18/slackbot-mcp-client</guid>
            <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We're excited to introduce you to the Slackbot MCP Client, which gives you the ability to superpower Slackbot with your desired tools.]]></description>
            <content:encoded><![CDATA[<p>We're excited to introduce you to the Slackbot MCP Client, which gives you the ability to superpower Slackbot with your desired tools.</p>
<p>The Slackbot MCP Client allows developers to connect <a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener noreferrer" class="">MCP servers</a> to Slack. Once connected, Slackbot will automatically discover your MCP server's tools and invoke them based on user prompts in conversation.</p>
<p>Four authentication methods are available for connecting to MCP servers:</p>
<ul>
<li class=""><strong>Slack identity auth</strong>: for MCP servers that map Slack user and team IDs to available features, with no separate OAuth flow required for end users.</li>
<li class=""><strong>No auth</strong>: for MCP servers that serve standard responses regardless of requestor.</li>
<li class=""><strong>Dynamic Client Registration</strong>: for MCP servers that support standard OAuth discovery. Slack handles client registration automatically.</li>
<li class=""><strong>Manual OAuth</strong>: for MCP servers where you manually register OAuth credentials with the provider.</li>
</ul>
<p>Read the <a class="" href="https://docs.slack.dev/ai/slackbot-mcp-client">Slackbot MCP Client docs</a> to get started.</p>]]></content:encoded>
            <category>Announcement</category>
            <category>New Feature</category>
        </item>
        <item>
            <title><![CDATA[System notifications now delivered by "Slack" instead of Slackbot]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/17/system-notifications</link>
            <guid>https://docs.slack.dev/changelog/2026/06/17/system-notifications</guid>
            <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Slack system notifications (such as channel membership changes, User Group updates, Slack Connect alerts, and retention policy notices) are now delivered from the "Slack" system user (USLACK) instead of Slackbot.]]></description>
            <content:encoded><![CDATA[<p>Slack system notifications (such as channel membership changes, User Group updates, Slack Connect alerts, and retention policy notices) are now delivered from the "Slack" system user (<code>USLACK</code>) instead of Slackbot.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-changing">What's changing<a href="https://docs.slack.dev/changelog/2026/06/17/system-notifications#whats-changing" class="hash-link" aria-label="Direct link to What's changing" title="Direct link to What's changing" translate="no">​</a></h2>
<p>Previously, system-generated notifications were sent as direct messages from Slackbot. Now that Slackbot is the home for AI conversations in Slack, we want to separate notification delivery for clarity. These notifications are now sent from the new "Slack" system user, <code>USLACK</code>. Existing historical Slackbot system notifications will be backfilled and moved to the new "Slack" DM as well.</p>
<p>Note: User-authored messages sent directly to Slackbot (e.g., messages you typed into the Slackbot conversation) are not affected by this change.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-this-means-for-developers">What this means for developers<a href="https://docs.slack.dev/changelog/2026/06/17/system-notifications#what-this-means-for-developers" class="hash-link" aria-label="Direct link to What this means for developers" title="Direct link to What this means for developers" translate="no">​</a></h2>
<p>If your app or integration:</p>
<ul>
<li class="">Filters incoming messages or events by Slackbot's user ID,</li>
<li class="">Checks the username field for "Slackbot" to identify system notifications, or</li>
<li class="">Uses the <code>chat.postMessage</code> API method or related API methods and expects system notifications to route through Slackbot</li>
</ul>
<p>then you should update your integration to handle the new "Slack" system user (<code>USLACK</code>) instead.</p>
<p>No action required if your integration does not reference Slackbot's user ID or username in its logic.</p>]]></content:encoded>
            <category>Announcement</category>
            <category>Breaking change</category>
        </item>
        <item>
            <title><![CDATA[New Block Kit data visualization block]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/16/block-kit-data-visualization-block</link>
            <guid>https://docs.slack.dev/changelog/2026/06/16/block-kit-data-visualization-block</guid>
            <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The data visualization block is now available for Block Kit use.]]></description>
            <content:encoded><![CDATA[<p>The <a class="" href="https://docs.slack.dev/reference/block-kit/blocks/data-visualization-block">data visualization</a> block is now available for Block Kit use.</p>
<p>For more details about building with Block Kit, check out our <a class="" href="https://docs.slack.dev/block-kit/">Block Kit overview</a>!</p>]]></content:encoded>
            <category>New Feature</category>
            <category>Block Kit</category>
        </item>
        <item>
            <title><![CDATA[Release: Java Slack SDK v1.49.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/03/java-slack-sdk</link>
            <guid>https://docs.slack.dev/changelog/2026/06/03/java-slack-sdk</guid>
            <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[* We've added authorship arguments (iconemoji, iconurl, and username) to the assistant.threads.setStatus and chat.startStream API methods.]]></description>
            <content:encoded><![CDATA[<ul>
<li class="">We've added authorship arguments (<code>icon_emoji</code>, <code>icon_url</code>, and <code>username</code>) to the <code>assistant.threads.setStatus</code> and <code>chat.startStream</code> API methods.</li>
<li class="">We've added <code>highlight_type</code> support to the <code>files.completeUploadExternal</code> and <code>filesUploadV2</code> API methods. The <code>highlight_type</code> parameter allows specifying the file type hint for uploads (e.g., <code>png</code>, <code>jpg</code>, and <code>gif</code> file types), enabling optimistic rendering before the async upload processing job completes.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Java Slack SDK</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v4.2.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/06/03/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/06/03/slack-cli</guid>
            <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 4.2.0 of the Slack CLI has arrived!]]></description>
            <content:encoded><![CDATA[<p>Version <code>4.2.0</code> of the Slack CLI has arrived!</p>
<ul>
<li class="">The <code>slack api</code> command can now send unauthenticated requests when no token is available or when <code>--no-auth</code> is specified.</li>
<li class="">The <code>slack api</code> command no longer triggers a background update check when invoked with arguments (e.g., <code>slack api chat.postMessage</code>).</li>
<li class="">Any <code>Y/N</code> select prompts now display as vertical selection, similar to the <code>slack create</code> command.</li>
<li class="">We've disabled upgrade notifications for the <code>slack manifest</code> and <code>slack manifest info</code> command. The command returns JSON that may be used for scripting, and the notifications interfere with parsing the response output.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
        <item>
            <title><![CDATA[New Block Kit data table block]]></title>
            <link>https://docs.slack.dev/changelog/2026/05/20/block-kit-more-new-blocks</link>
            <guid>https://docs.slack.dev/changelog/2026/05/20/block-kit-more-new-blocks</guid>
            <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The data table block is now available for Block Kit use.]]></description>
            <content:encoded><![CDATA[<p>The <a class="" href="https://docs.slack.dev/reference/block-kit/blocks/data-table-block">data table</a> block is now available for Block Kit use.</p>
<p>For more details about building with Block Kit, check out our <a class="" href="https://docs.slack.dev/block-kit/">Block Kit overview</a>!</p>]]></content:encoded>
            <category>New Feature</category>
            <category>Block Kit</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v4.1.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/05/19/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/05/19/slack-cli</guid>
            <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 4.1.0 of the Slack CLI has landed!]]></description>
            <content:encoded><![CDATA[<p>Version <code>4.1.0</code> of the Slack CLI has landed!</p>
<ul>
<li class="">We've added a <code>slack api &lt;method&gt;</code> command, which allows you to call any API method directly from the Slack CLI. For example:<!-- -->
<ul>
<li class=""><code>slack api chat.postMessage channel=C123 text="hi"</code></li>
<li class=""><code>slack api chat.postMessage '{"channel":"C123","text":"hi"}'</code></li>
</ul>
</li>
<li class="">Interactive forms are now screen reader friendly when the <code>ACCESSIBLE</code> environment variable is set, or when using the <code>--accessible</code> flag.</li>
<li class="">We've added a new <code>env init</code> command to copy a template placeholder <code>.env.sample</code> or <code>.env.example</code> file to the <code>.env</code> file of your project.</li>
<li class="">We've added support for the <code>settings.is_mcp_enabled: &lt;bool&gt;</code> manifest property to enable or disable the Slack MCP Server. This causes cached values to expire and the next run attempt may surface a warning noting that app settings have changed since the last update.</li>
<li class="">We've added support for optional OAuth scopes (<code>bot_optional</code> and <code>user_optional</code>) in the app manifest schema.</li>
<li class="">We've added a <code>SLACK_CLI_APP_ICON_PATH</code> environment variable to override the icon file path used during app install and local run. When set, the specified path takes priority over the manifest <code>icon</code> field and the default icon file search. A warning is displayed if the configured path does not exist.</li>
<li class="">Icon auto-detection now supports <code>.png</code>, <code>.jpg</code>, <code>.jpeg</code>, and <code>.gif</code> formats in <code>assets/</code> and project root. The <code>assets/</code> directory is checked before project root; <code>.png</code> is preferred when multiple formats exist.</li>
<li class="">App manifest display names now preserve the original app name instead of using the kebab-case directory name during <code>slack create</code>.</li>
<li class="">We've added verbose debug logging and retry support to icon upload API calls.</li>
<li class="">We capitalized "App" in the <code>slack create</code> category selection menu titles for more consistent title casing.</li>
<li class="">We've added more polish to outputs from the <code>slack create</code> command section headers.</li>
<li class="">The <code>slack create</code> command preserves path separators when a nested path is provided as the project directory. The <code>--name</code> flag now only overrides the app's display name in the manifest without replacing the path argument. For example:<!-- -->
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">$ slack create path/to/my-app --name "My App"</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"># Creates directory at ./path/to/my-app/ with manifest name "My App"</span><br></div></code></pre></div></div>
</li>
<li class="">We fixed the S3 <code>Content-MD5</code> header when deploying a Deno app to Slack. We now remove the MD5 hash computation and <code>Content-MD5</code> header from S3 presigned POST uploads to avoid an error.</li>
<li class="">The Slack CLI installer now outputs the pinned version provided if a particular version is provided, rather than a version and blank space.</li>
<li class="">The Slack CLI now avoids uploading icons for non-hosted apps that do not have the <code>set-icon</code> experiment enabled.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
        <item>
            <title><![CDATA[New Slack MCP Server tools released]]></title>
            <link>https://docs.slack.dev/changelog/2026/05/13/new-mcp-tools</link>
            <guid>https://docs.slack.dev/changelog/2026/05/13/new-mcp-tools</guid>
            <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We've added the following tools to the Slack MCP server:]]></description>
            <content:encoded><![CDATA[<p>We've added the following tools to the Slack MCP server:</p>
<ul>
<li class=""><strong>Add reactions</strong> — adds an emoji reaction to a Slack message on behalf of the authenticated user.</li>
<li class=""><strong>Create a conversation/channel</strong> — creates a new Slack channel, group DM, or IM conversation on behalf of the authenticated user.</li>
<li class=""><strong>List channel members</strong> — retrieve a list of user IDs for members of a given Slack channel or conversation.</li>
<li class=""><strong>List emoji</strong> — returns the list of custom emoji available in the workspace.</li>
<li class=""><strong>Read files</strong> — retrieves metadata and content of files shared in Slack workspaces.</li>
</ul>
<p>Read all about the MCP server in the <a class="" href="https://docs.slack.dev/ai/slack-mcp-server">API docs</a>.</p>]]></content:encoded>
            <category>New Feature</category>
        </item>
        <item>
            <title><![CDATA[New Block Kit blocks and Streaming API method updates]]></title>
            <link>https://docs.slack.dev/changelog/2026/04/16/block-kit-new-blocks</link>
            <guid>https://docs.slack.dev/changelog/2026/04/16/block-kit-new-blocks</guid>
            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The following new blocks are now available for Block Kit use:]]></description>
            <content:encoded><![CDATA[<p>The following new blocks are now available for Block Kit use:</p>
<ul>
<li class=""><a class="" href="https://docs.slack.dev/reference/block-kit/blocks/alert-block">Alert block</a></li>
<li class=""><a class="" href="https://docs.slack.dev/reference/block-kit/blocks/card-block">Card block</a></li>
<li class=""><a class="" href="https://docs.slack.dev/reference/block-kit/blocks/carousel-block">Carousel block</a></li>
</ul>
<p>In addition, we've made some updates to the text-streaming API methods to support streaming blocks:</p>
<ul>
<li class=""><a class="" href="https://docs.slack.dev/reference/methods/chat.startStream"><code>chat.startStream</code></a></li>
<li class=""><a class="" href="https://docs.slack.dev/reference/methods/chat.appendStream"><code>chat.appendStream</code></a></li>
<li class=""><a class="" href="https://docs.slack.dev/reference/methods/chat.stopStream"><code>chat.stopStream</code></a></li>
</ul>
<p>For more details about building with Block Kit, check out our <a class="" href="https://docs.slack.dev/block-kit/">Block Kit overview</a>!</p>]]></content:encoded>
            <category>New Feature</category>
            <category>Block Kit</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v4.0.0 and v4.0.1]]></title>
            <link>https://docs.slack.dev/changelog/2026/04/10/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/04/10/slack-cli</guid>
            <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 4.0.0 of the developer tools for the Slack platform has arrived with lots of goodies for you!]]></description>
            <content:encoded><![CDATA[<p>Version <code>4.0.0</code> of the developer tools for the Slack platform has arrived with lots of goodies for you!</p>
<p>This version ties together iterative improvements, with special focus on agent development. The Slack CLI can now quickly scaffold an AI agent using the <code>slack create agent</code> command and our collection of agent sample apps. Features such as local manifest management, environment variable management, and file watching with live reloading come together to streamline the agent development experience.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-features">New features<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#new-features" class="hash-link" aria-label="Direct link to New features" title="Direct link to New features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="creating-apps-and-agents">Creating apps and agents<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#creating-apps-and-agents" class="hash-link" aria-label="Direct link to Creating apps and agents" title="Direct link to Creating apps and agents" translate="no">​</a></h3>
<ul>
<li class="">The AI Agent templates now include an IT support agent available with the <code>slack create agent</code> command.<!-- -->
<ul>
<li class="">Use <code>slack create agent</code> to choose one the new AI Agent templates:<!-- -->
<ul>
<li class="">Starter Agent:<!-- -->
<ul>
<li class="">Supports Bolt for JavaScript and Bolt for Python</li>
<li class="">Available in the Claude Agent SDK, OpenAI Agents SDK, and Pydantic AI framework</li>
</ul>
</li>
<li class="">IT Support Agent:<!-- -->
<ul>
<li class="">Supports Bolt for JavaScript and Bolt for Python</li>
<li class="">Available in the Claude Agent SDK, OpenAI Agents SDK, and Pydantic AI framework</li>
</ul>
</li>
</ul>
</li>
<li class="">Slack MCP Server is built-in to all of the AI Agent templates.</li>
</ul>
</li>
<li class="">The Slack CLI installer now ends with a recommendation to run the <code>slack create agent</code> command.</li>
<li class="">The <code>slack create</code> command now separates selections into categories of templates for frameworks to better align with the options displayed.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="managing-environment-variables">Managing environment variables<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#managing-environment-variables" class="hash-link" aria-label="Direct link to Managing environment variables" title="Direct link to Managing environment variables" translate="no">​</a></h3>
<ul>
<li class="">Environment variables saved to <code>.env</code> files are now loaded into the process before hook scripts run. This improves the <code>slack run</code> command, as additional dependencies are no longer required to load environment variables into the runtime context. Other commands such as the <code>slack deploy</code> command and the <code>slack manifest</code> command also benefit, as the underlying hooks can be more expressive in customizations, and can also be configured for custom environments.</li>
<li class="">The <code>slack env list</code> command now lists the environment variables available from <code>.env</code> files for apps that aren't run on Slack infrastructure.</li>
<li class="">The <code>slack env set</code> command can now add and update environment variables in <code>.env</code> files for apps that aren't built or run on Slack infrastructure, making configuring and iterating on a Bolt app from the command line faster.</li>
<li class="">The <code>slack env unset</code> command now removes environment variables from <code>.env</code> files for apps that aren't built or run on Slack infrastructure.</li>
<li class="">The <code>slack env</code> commands were aliased to <code>env set</code> and <code>env unset</code> to match more common shell conventions. (These commands were previously recommended as <code>add</code> and <code>remove</code>, which became confusing when existing variables were updated.) Refer to the <a class="" href="https://docs.slack.dev/tools/slack-cli/reference/commands/slack_env"><code>slack env</code></a> command docs for more details.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="finding-docs-programmatically">Finding docs programmatically<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#finding-docs-programmatically" class="hash-link" aria-label="Direct link to Finding docs programmatically" title="Direct link to Finding docs programmatically" translate="no">​</a></h3>
<ul>
<li class="">We've added a <code>slack docs search</code> subcommand, which can output search results using plain text, json, or your preferred browser. Refer to the <a class="" href="https://docs.slack.dev/tools/slack-cli/reference/commands/slack_docs"><code>slack docs</code></a> command docs for more details.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="developing-an-app">Developing an app<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#developing-an-app" class="hash-link" aria-label="Direct link to Developing an app" title="Direct link to Developing an app" translate="no">​</a></h2>
<ul>
<li class="">We've added file watch and live reload support to <code>slack run</code>. This allows your Slack apps to immediately reflect changes to files by you or your agent-related development tools (Claude Code, Codex, etc.).</li>
<li class="">It's easier to start an HTTP OAuth Server or app with a custom path, as the <code>slack run</code> command now accepts an optional argument for the app entry point. For example: <code>$ slack run ./src/app_oauth.py</code>.</li>
<li class="">We updated the <code>slack run</code> command for Enterprise Organizations so that "All workspaces" is always shown as the first option when prompted to choose whether to grant to all workspaces or a specific workspace.</li>
<li class="">When a command runs using the verbose flag (<code>--verbose</code>) and makes an HTTP request, the output now includes the HTTP Header's User-Agent. For example: <code>HTTP Request User-Agent: slack-cli/v3.15.0 (os: darwin)</code>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="python-project-improvements">Python project improvements<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#python-project-improvements" class="hash-link" aria-label="Direct link to Python project improvements" title="Direct link to Python project improvements" translate="no">​</a></h2>
<ul>
<li class="">The <code>slack create</code> and <code>slack init</code> commands now create a Python Virtual Environment (<code>.venv</code>) when it doesn't exist.</li>
<li class="">The <code>slack create</code> and <code>slack init</code> commands now install your project dependencies from <code>pyproject.toml</code> and <code>requirements.txt</code> after activating your Python virtual environment.</li>
<li class="">All <code>slack</code> commands now activate your Python virtual environment, when it exists. For example, this means <code>slack run</code> will activate your <code>.venv</code> before starting your app's server.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bolt-framework-agent-improvements">Bolt Framework agent improvements<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#bolt-framework-agent-improvements" class="hash-link" aria-label="Direct link to Bolt Framework agent improvements" title="Direct link to Bolt Framework agent improvements" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/slackapi/bolt-js/releases/tag/%40slack%2Fbolt%404.7.0" target="_blank" rel="noopener noreferrer" class="">Bolt for JavaScript 4.7.0</a> and <a href="https://github.com/slackapi/bolt-python/releases/tag/v1.28.0" target="_blank" rel="noopener noreferrer" class="">Bolt for Python 1.28.0</a> support a collection of new agent-related UI features.</li>
<li class="">Event listener handlers now provide utilities to display your agent's thinking status, streaming text, display suggested prompts, and more.</li>
<li class="">The Slack MCP Server now works with Bolt Frameworks.</li>
<li class="">Popular agent frameworks such as Claude Agent SDK, OpenAI Agents SDK, Pydantic, and Vercel now work with Bolt.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="prompt-look-and-feel">Prompt look and feel<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#prompt-look-and-feel" class="hash-link" aria-label="Direct link to Prompt look and feel" title="Direct link to Prompt look and feel" translate="no">​</a></h2>
<ul>
<li class="">We've refreshed our interactive prompt style with <a href="https://github.com/charmbracelet/huh" target="_blank" rel="noopener noreferrer" class="">Charm's Huh</a> package.</li>
<li class="">Interactive prompts now support light-mode and dark-mode.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="bug-fixes">Bug fixes<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#bug-fixes" class="hash-link" aria-label="Direct link to Bug fixes" title="Direct link to Bug fixes" translate="no">​</a></h2>
<ul>
<li class="">We fixed a <code>pyproject.toml</code> error that was displayed by the <code>slack create</code> and <code>slack init</code> commands. The error occurred when creating a Bolt Python project that includes <code>pyproject.toml</code>, but doesn't define a <code>[project]</code> section or <code>dependencies</code> array. Now, a warning is displayed in <code>--verbose</code> mode, as this is a valid <code>pyproject.toml</code> format.</li>
<li class="">We fixed a bug: environment variable values set for hook commands are no longer surrounded with double quotes.</li>
<li class="">We fixed a bug with the Windows installer. The installer now suggests providing an optional alias as a separate step from downloading the installer if earlier overwrites were avoided but still caused the installation to fail.</li>
<li class="">We fixed a bug: errors will appear sooner in CI and scripting setups if either interactive input or a confirmation is requested, rather than waiting for a timeout.</li>
<li class="">We fixed a bug: The sections of <code>slack env</code> command outputs are now titled to match the command itself, and are grouped under one section for each command.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="but-wait-theres-more">But wait, there's more!<a href="https://docs.slack.dev/changelog/2026/04/10/slack-cli#but-wait-theres-more" class="hash-link" aria-label="Direct link to But wait, there's more!" title="Direct link to But wait, there's more!" translate="no">​</a></h2>
<p>In version <code>4.0.1</code> of the developer tools, we've fixed the <code>slack create agent</code> command so that it shows prompts for the app template, Bolt Framework, and then Agent Framework. This adds more templates to the options, including Bolt for JavaScript and Bolt for Python implementations of the Starter Agent and Support Agent templates.</p>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
        <item>
            <title><![CDATA[PKCE is now generally available!]]></title>
            <link>https://docs.slack.dev/changelog/2026/03/30/pkce</link>
            <guid>https://docs.slack.dev/changelog/2026/03/30/pkce</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We are excited to announce support for Proof Key for Code Exchange (PKCE). PKCE is an OAuth security extension that enables developers to build more secure Slack applications on public clients, such as desktop apps and mobile apps, without the need to embed a vulnerable client_secret.]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce support for Proof Key for Code Exchange (PKCE). PKCE is an OAuth security extension that enables developers to build more secure Slack applications on public clients, such as desktop apps and mobile apps, without the need to embed a vulnerable <code>client_secret</code>.</p>
<p>Previously available in early access by request only, PKCE can now be enabled directly in your app settings without contacting Slack support.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-things-to-know">Key things to know<a href="https://docs.slack.dev/changelog/2026/03/30/pkce#key-things-to-know" class="hash-link" aria-label="Direct link to Key things to know" title="Direct link to Key things to know" translate="no">​</a></h3>
<ul>
<li class="">Enabling PKCE marks your app as a public client. This is a one-way operation; it cannot be undone without contacting Slack support.</li>
<li class="">OAuth installations which redirect to a custom URI scheme (e.g. <code>myApp://auth</code>) will always receive <a class="" href="https://docs.slack.dev/authentication/using-token-rotation">rotating tokens</a>, even if token rotation is turned off. OAuth installations issued to a standard web URL (e.g. <code>myWebshite.com/auth</code>) will only receive rotating tokens if the 'token rotation' setting is enabled. All refresh tokens issued to PKCE-enabled apps expire after 30 days.</li>
<li class="">Once enabled, PKCE arguments (<code>code_challenge</code>, <code>code_challenge_method</code>, <code>code_verifier</code>) are optional for standard OAuth flows, but required when redirecting to a custom URI scheme.</li>
<li class="">Desktop redirects (custom URI schemes and <code>localhost</code> redirects for PKCE-enabled apps) cannot request bot scopes.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting started<a href="https://docs.slack.dev/changelog/2026/03/30/pkce#getting-started" class="hash-link" aria-label="Direct link to Getting started" title="Direct link to Getting started" translate="no">​</a></h3>
<p>Check out the <a class="" href="https://docs.slack.dev/authentication/using-pkce">PKCE documentation</a> to learn how to implement the full PKCE flow, including how to generate a <code>code_verifier</code>, construct the authorization URL, and exchange the code using the <a class="" href="https://docs.slack.dev/reference/methods/oauth.v2.access"><code>oauth.v2.access</code></a> API method without a client secret.</p>]]></content:encoded>
            <category>New Feature</category>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v3.15.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/03/19/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/03/19/slack-cli</guid>
            <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 3.15.0 of the developer tools for the Slack platform has arrived!]]></description>
            <content:encoded><![CDATA[<p>Version <code>3.15.0</code> of the developer tools for the Slack platform has arrived!</p>
<ul>
<li class="">The <code>slack create</code> command now normalizes project directory names to kebab-case (lowercase, dash-delimited, no whitespace or special characters). For example: <code>slack create "My App"</code> now creates a <code>my-app</code> directory instead of a <code>My-App</code> directory.</li>
<li class="">We've updated the the <code>slack create</code> command's app name prompt to show the randomly generated app name as placeholder text. You can press <code>Enter</code> to accept the default name, or type in a new name.</li>
<li class="">Bolt JavaScript and Bolt Python projects now default to using the local <code>manifest.json</code> as the app manifest (previously, it was a remote manifest from <a href="https://api.slack.com/apps" target="_blank" rel="noopener noreferrer" class="">app settings</a>). Changes to the app manifest via app settings will now be detected by the Slack CLI, and a prompt will be displayed before any manifest update action occurs (e.g., when using the <code>slack run</code> command). The manifest source is set after creating a new project with the <code>slack create</code> command or by initializing an existing project using the <code>slack init</code> command, and the setting is stored as <code>"manifest.source": "local"</code> in the <code>.slack/config.json</code> file.</li>
<li class="">We've updated the <code>slack app link</code> command to support projects that use a manifest file as the manifest source (<code>manifest.json</code>). As part of this:<!-- -->
<ul>
<li class="">A warning message will not be displayed when the manifest source is local (project file).</li>
<li class="">The manifest source is not changed; it now uses the project's current manifest source.</li>
<li class="">The current manifest source is displayed for your reference.</li>
<li class="">A tip on where to change the manifest source (<code>.slack/config.json</code>) is displayed.</li>
</ul>
</li>
<li class="">We've also updated the app manifest overwrite warning prompt wording and appearance:<!-- -->
<ul>
<li class="">It now clarifies that the app settings manifest will be overwritten by the project's app manifest file.</li>
<li class="">It now displays a warning that changes were detected on the app settings manifest that are not in the project's app manifest file.</li>
</ul>
</li>
<li class="">We fixed a bug: we now output a warning instead of an error if activating the Python virtual environment (<code>.venv/</code>) fails.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
        <item>
            <title><![CDATA[Optional scopes have landed]]></title>
            <link>https://docs.slack.dev/changelog/2026/03/16/optional-scopes</link>
            <guid>https://docs.slack.dev/changelog/2026/03/16/optional-scopes</guid>
            <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[You can now mark individual OAuth scopes as optional when configuring your Slack app! Optional scopes give users more control over what data your app can access during installation, without blocking them from installing your app entirely.]]></description>
            <content:encoded><![CDATA[<p>You can now mark individual OAuth scopes as optional when configuring your Slack app! Optional scopes give users more control over what data your app can access during installation, without blocking them from installing your app entirely.</p>
<p>What's changed:</p>
<ul>
<li class=""><strong>App configuration</strong>: Mark scopes as optional directly from the <a href="https://api.slack.com/apps" target="_blank" rel="noopener noreferrer" class="">app settings</a> page or via your app manifest using the new <code>bot_optional</code> and <code>user_optional</code> fields.</li>
<li class=""><strong>OAuth flow</strong>: Users now see optional scopes presented separately during installation and can choose which ones to grant.</li>
<li class=""><strong>Admin controls</strong>: Workspace admins can pre-approve which optional scopes are available to their users when approving apps.</li>
<li class=""><strong>App manifest</strong>: Two new fields—<code>bot_optional</code> and <code>user_optional</code>—are now supported under <code>oauth_config.scopes</code>. See <a class="" href="https://docs.slack.dev/reference/app-manifest#oauth">App manifest</a> fields for details.</li>
</ul>
<p>If your app uses scopes that aren't strictly required for core functionality, consider marking them as optional to improve installation rates. Read more on the <a class="" href="https://docs.slack.dev/authentication/installing-with-oauth#optional-scopes">Installing with OAuth</a> page.</p>]]></content:encoded>
            <category>Announcement</category>
            <category>New Feature</category>
        </item>
        <item>
            <title><![CDATA[New supported markdown types for rich text in Block Kit]]></title>
            <link>https://docs.slack.dev/changelog/2026/03/06/block-kit-rich-text</link>
            <guid>https://docs.slack.dev/changelog/2026/03/06/block-kit-rich-text</guid>
            <pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The following new supported markdown types for rich text when using Block Kit in your apps are being rolled out:]]></description>
            <content:encoded><![CDATA[<p>The following new supported markdown types for rich text when using Block Kit in your apps are being rolled out:</p>
<ul>
<li class="">syntax-highlighted code blocks (language-specific)</li>
<li class="">tables</li>
<li class="">task lists</li>
<li class="">dividers</li>
<li class="">variable-sized headers</li>
</ul>
<p>Check out our <a class="" href="https://docs.slack.dev/reference/block-kit/blocks/rich-text-block">rich text block</a> and <a class="" href="https://docs.slack.dev/reference/block-kit/blocks/markdown-block">markdown block</a> reference for more details!</p>]]></content:encoded>
            <category>New Feature</category>
            <category>Block Kit</category>
        </item>
        <item>
            <title><![CDATA[Set status method scope update]]></title>
            <link>https://docs.slack.dev/changelog/2026/03/05/set-status-scope-update</link>
            <guid>https://docs.slack.dev/changelog/2026/03/05/set-status-scope-update</guid>
            <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The assistant.threads.setStatus API method now accepts either the assistantwrite scope. This allows channel-based apps to use AI loading states in channels, without having to request assistantwrite scope in favor of the chat:write scope exclusively, so update your app soon!]]></description>
            <content:encoded><![CDATA[<p>The <a class="" href="https://docs.slack.dev/reference/methods/assistant.threads.setStatus"><code>assistant.threads.setStatus</code></a> API method now accepts either the <a class="" href="https://docs.slack.dev/reference/scopes/assistant.write"><code>assistant:write</code></a> or <a class="" href="https://docs.slack.dev/reference/scopes/chat.write"><code>chat:write</code></a> scope. This allows channel-based apps to use <a class="" href="https://docs.slack.dev/ai/developing-agents#loading-states">AI loading states</a> in channels, without having to request <code>assistant:write</code> or use the AI assistant split view. The <code>assistant.threads.setStatus</code> API method will eventually no longer accept the <code>assistant:write</code> scope in favor of the <code>chat:write</code> scope exclusively, so update your app soon!</p>]]></content:encoded>
            <category>Announcement</category>
        </item>
        <item>
            <title><![CDATA[Release: Slack CLI v3.14.0]]></title>
            <link>https://docs.slack.dev/changelog/2026/03/05/slack-cli</link>
            <guid>https://docs.slack.dev/changelog/2026/03/05/slack-cli</guid>
            <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Version 3.14.0 of the developer tools for the Slack platform has landed!]]></description>
            <content:encoded><![CDATA[<p>Version <code>3.14.0</code> of the developer tools for the Slack platform has landed!</p>
<ul>
<li class="">The <a class="" href="https://docs.slack.dev/tools/slack-cli/reference/commands/slack_create"><code>slack create</code></a> command now prompts you for a custom app name if the randomly generated default isn't your thing. This prompt appears before scaffolding a new project from a template, and when making new project directories with your custom app name, we now replace spaces with a dash (instead of removing spaces altogether) to make navigation a bit better.</li>
<li class="">The <code>slack create</code> command now updates the app name in the <code>package.json</code> and <code>pyproject.toml</code> project files.</li>
<li class="">We've updated the <code>slack create</code> and <a class="" href="https://docs.slack.dev/tools/slack-cli/reference/commands/slack_init"><code>slack init</code></a> commands to support creating a Python virtual environment (.venv) when it doesn't exist, and installing the project's dependencies from the <code>requirements.txt</code> and <code>pyproject.toml</code> project files.</li>
<li class="">When running Slack CLI commands in a Bolt Python project, the Slack CLI will attempt to automatically activate the Python virtual environment (.venv). This allows commands that use the <code>slack-cli-hooks</code> Python package to run safely and successfully, even when the terminal system doesn't have the virtual environment activated.</li>
<li class="">We've added a <code>--subdir</code> flag to the <code>slack create</code> command for extracting a subdirectory from a template repository as the project root. This supports monorepo-style templates where multiple apps live in subdirectories (e.g., <code>slack create my-app -t org/monorepo --subdir apps/my-app</code>).</li>
<li class="">The <a class="" href="https://docs.slack.dev/tools/slack-cli/reference/commands/slack_docs"><code>slack docs</code></a> command opens the slack developer docs site, and you can now use the <code>--search</code> flag to open the docs search page with the provided query.</li>
<li class="">We fixed a bug and now avoid infinite loops when searching for the root project <code>.slack</code> directory for projects existing on drives other than the <code>C:</code> drive on Windows.</li>
<li class="">We fixed a bug and now check whether an installed <code>git</code> command exists on Windows.</li>
</ul>]]></content:encoded>
            <category>Release</category>
            <category>Slack CLI</category>
        </item>
    </channel>
</rss>