Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.
Private alpha. A platform administrator must enable Slack Assistant for your organization first. See OpenWork in Slack for what this sets up and who does each step.
Prefer to delegate? The setup prompt lets an agent do these steps with your access.
Open Connectors → Slack → OpenWork in Slack in OpenWork Cloud.
Use the Slack connector in Individual accounts mode, with the existing Slack app’s client ID and client secret. Follow Connect Slack if you do not have a connector yet. Its last screen offers Set up @openwork in Slack next, which opens this section.
A platform administrator must enable Slack Assistant for your organization. Hosted runtime availability must also be configured by the operator. If the page reports missing access, resolve that before installation.
Keep the connector’s workspace, team, and member grants appropriate for your rollout. The assistant follows those grants.
Expand Slack app manifest in the connector. Open that same app at Slack API apps, then App Manifest.Merge the generated settings into the existing manifest. Preserve existing user OAuth scopes, optional user scopes, redirect URLs, and MCP settings. Add the bot settings rather than replacing the user configuration.The resulting app needs:
Bot display name openwork.
Agents → Agent experience on.
App Home → Messages Tab on, with messages and slash commands allowed.
Bot scopes: app_mentions:read, chat:write, im:history, im:read, im:write, assistant:write, and commands.
The events URL must be publicly reachable over HTTPS. Slack verifies it with a challenge. Save the manifest; complete URL verification after saving the signing secret if the first attempt fails.
If Slack rejects features.agent_view.enabled, use the agent-view representation already exported by Slack’s manifest editor and verify Agent experience is on in Agents. Do not remove agent view or required events just to make validation pass.
In Slack, open Basic Information → App Credentials → Signing Secret. Transfer it directly into Slack app signing secret in the connector and click Save secret. Keep it out of chats, source control, and screenshots shared with others.Click Add to Slack, authorize the correct workspace, and finish within ten minutes. OpenWork rejects an installation that does not grant every required bot scope. A successful installation changes the button to Reinstall in Slack.In Slack’s Event Subscriptions, retry the challenge if needed. Confirm Verified, then Save Changes.
Turn on Enable @openwork in Slack. Start with Send replies privately during rollout on: replies move to the invoking member’s DM.Under Rollout limits, enter comma-separated channel IDs to restrict channel use, or leave Allowed channel IDs blank to allow all channels. Blank does not automatically invite the bot into every channel. DMs remain available to eligible members. Set the daily request limit and save limits when you change them.Channel replies are visible to the channel when private rollout replies are off. Choose the reply mode before asking for personal information from connected services.
Installing the bot does not link anyone’s account. Each member, including you, follows Connect your account and sends a test message.To pause the rollout, turn off Enable @openwork in Slack. Disabling new requests cannot recall external actions that have already run.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenWork Docs","colors":{"primary":"#011627","light":"#cbd5e1","dark":"#011627"},"logo":{"light":"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/light.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=4467903d12836ac81ccb6eef9dbe7bde","dark":"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/dark.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=104602207077f80bd2961c67c80dfcf4"},"favicon":"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/light.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=4467903d12836ac81ccb6eef9dbe7bde","api":{"openapi":"https://api.openworklabs.com/openapi.json?public=1"},"background":{"color":{"light":"#ffffff","dark":"#011627"}},"navbar":{"primary":{"type":"button","label":"Download OpenWork","href":"https://openworklabs.com/download"}},"seo":{"metatags":{"og:image":"https://openworklabs.com/docs/images/openwork-social.png","og:image:alt":"OpenWork — Your AI workspace. Without vendor lock-in.","twitter:image:alt":"OpenWork — Your AI workspace. Without vendor lock-in."}},"errors":{"404":{"redirect":false,"title":"Missing Documentation?","description":"If you're technical and want to use a specific part of the app that is not documented well yet, [send us a quick email](mailto:team@openworklabs.com?subject=missing%20documentation\u0026body=hey%20my%20github%20is%20%7Busername%7D%2C%20I%27m%20interested%20in%20%7Bfeature%7D%20from%20openwork%20but%20I%27m%20missing%20documentation%20on%20it%2C%20could%20you%20create%20it%3F%0A%0AThanks) and tell us what you're missing."}},"markdown":{"instructions":["For agents: install the OpenWork desktop app with `brew install --cask openwork` (macOS) or from https://openworklabs.com/download. Do not run `npx openwork`; the npm package named `openwork` is a different project.","Connect an agent to OpenWork with the MCP Gateway: `claude mcp add --transport http openwork https://api.openworklabs.com/mcp/agent`. Teams sign up at https://app.openworklabs.com?mode=sign-up.","Step-by-step agent guide: https://openworklabs.com/docs/start-here/use-openwork-from-an-ai-agent.md","Connect Slack (any organization admin): https://openworklabs.com/docs/slack/connect-slack.md. OpenWork in Slack (@openwork bot) is private alpha for approved organizations. Setup guide: https://openworklabs.com/docs/slack/overview.md. Agent skill: https://openworklabs.com/.well-known/agent-skills/set-up-openwork-slack/SKILL.md."]},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"differentai","hasAudioNarration":false,"actualSubdomain":"differentai","customDomains":["openworklabs.com"],"gitSource":{"type":"github","owner":"different-ai","repo":"openwork","deployBranch":"dev","contentDirectory":"packages/docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af279f469f44f3f50321d28","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API","count":662},{"language":"default","tag":"Capability Sources","count":86},{"language":"default","tag":"Inference Providers","count":52},{"language":"default","tag":"Admin","count":51},{"language":"default","tag":"SSO","count":46},{"language":"default","tag":"Organizations","count":44},{"language":"default","tag":"Desktop App","count":30},{"language":"default","tag":"Authentication","count":30},{"language":"default","tag":"Connectors","count":30},{"language":"default","tag":"MCP Gateway","count":27}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#topbar-cta-button>a[href=\"https://openworklabs.com/download\"]{padding-right:0.75rem}#topbar-cta-button>a[href=\"https://openworklabs.com/download\"]>div>svg[aria-hidden=\"true\"]{display:none}body:has(.docs-intro) #header{display:none}#content-area h1,#content-area h2,#content-area h3,#content-area h4{color:#011627;letter-spacing:-0.025em}.docs-intro{padding:8px 0 32px;margin-bottom:32px;border-bottom:1px solid #e5e7eb}#content-area .docs-eyebrow{margin:0 0 16px;color:#4b5563;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:11px;line-height:1.6;letter-spacing:0.1em;text-transform:uppercase}#content-area .docs-intro h1,#content-area .docs-intro .docs-hero-title{margin:0;max-width:680px;font-size:clamp(2.25rem, 4vw, 3rem);font-weight:500;line-height:1.12;letter-spacing:-0.045em;text-wrap:balance}#content-area .docs-lead{margin:20px 0 24px;color:#4b5563;font-size:18px;line-height:1.65}#content-area .docs-section-title{margin:0 0 16px;font-size:clamp(1.75rem, 3vw, 2.25rem);font-weight:500;line-height:1.2;scroll-margin-top:150px}.docs-actions{display:flex;flex-wrap:wrap;gap:12px}#content-area .docs-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 20px;border:1px solid #e5e7eb;border-radius:999px;color:#011627;background:#f0f4f9;font-size:15px;font-weight:500;text-decoration:none}#content-area .docs-actions a:first-child{color:#ffffff;background:#011627;border-color:#011627}#content-area .docs-actions a:hover{opacity:0.85}#content-area .card{background:#f8fafc;border-color:#e5e7eb}a:focus-visible,button:focus-visible{outline:2px solid #011627;outline-offset:4px}@media (max-width: 1023px){#content-area a[aria-label=\"Navigate to header\"]{margin-left:-16px;width:16px}#content-area a[aria-label=\"Navigate to header\"]>div{width:16px;height:24px}}.dark #content-area :is(h1,h2,h3,h4),.dark #content-area :is(.docs-lead,.docs-eyebrow){color:#e2e8f0}.dark .docs-intro{border-color:#334155}.dark #content-area .docs-actions a{color:#e2e8f0;background:#172b3b;border-color:#475569}.dark #content-area .docs-actions a:first-child{color:#011627;background:#e2e8f0}.dark #content-area .card{background-color:#0b1e30;border-color:#334155}.dark :is(a,button):focus-visible{outline-color:#e2e8f0}a[href^=\"https://www.mintlify.com\"][href*=\"utm_campaign=poweredBy\"]{color:#4b5563}.dark a[href^=\"https://www.mintlify.com\"][href*=\"utm_campaign=poweredBy\"]{color:#cbd5e1}"}],"page":{"pagePath":"slack/set-up-the-slack-app","slug":"/slack/set-up-the-slack-app","pageMetadata":{"title":"Set up OpenWork in Slack","sidebarTitle":"Set up the Slack app","description":"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.","keywords":["slack","@openwork","slack manifest","slack app","signing secret","add to slack","install slack bot","bot scopes","event subscriptions"],"href":"/slack/set-up-the-slack-app"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,Table,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Private alpha.`}),` A platform administrator must enable `,_jsx(_components.strong,{children:`Slack Assistant`}),` for your organization first. See `,_jsx(_components.a,{href:`/slack/overview`,children:`OpenWork in Slack`}),` for what this sets up and who does each step.`]})}),`\n`,_jsxs(_components.p,{children:[`Prefer to delegate? The `,_jsx(_components.a,{href:`/slack/overview#ask-your-agent-to-set-it-up`,children:`setup prompt`}),` lets an agent do these steps with your access.`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-check-alpha-access-and-the-existing-connector`,children:`1. Check alpha access and the existing connector`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Connectors → Slack → OpenWork in Slack`}),` in `,_jsx(_components.a,{href:`https://app.openworklabs.com`,children:`OpenWork Cloud`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Use the Slack connector in `,_jsx(_components.strong,{children:`Individual accounts`}),` mode, with the existing Slack app’s client ID and client secret. Follow `,_jsx(_components.a,{href:`/slack/connect-slack`,children:`Connect Slack`}),` if you do not have a connector yet. Its last screen offers `,_jsx(_components.strong,{children:`Set up @openwork in Slack next`}),`, which opens this section.`]}),`\n`,_jsxs(_components.li,{children:[`A platform administrator must enable `,_jsx(_components.strong,{children:`Slack Assistant`}),` for your organization. Hosted runtime availability must also be configured by the operator. If the page reports missing access, resolve that before installation.`]}),`\n`,_jsx(_components.li,{children:`Keep the connector’s workspace, team, and member grants appropriate for your rollout. The assistant follows those grants.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-merge-the-manifest-into-the-same-slack-app`,children:`2. Merge the manifest into the same Slack app`}),`\n`,_jsxs(_components.p,{children:[`Expand `,_jsx(_components.strong,{children:`Slack app manifest`}),` in the connector. Open that same app at `,_jsx(_components.a,{href:`https://api.slack.com/apps`,children:`Slack API apps`}),`, then `,_jsx(_components.strong,{children:`App Manifest`}),`.`]}),`\n`,_jsx(_components.p,{children:`Merge the generated settings into the existing manifest. Preserve existing user OAuth scopes, optional user scopes, redirect URLs, and MCP settings. Add the bot settings rather than replacing the user configuration.`}),`\n`,_jsx(_components.p,{children:`The resulting app needs:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Bot display name `,_jsx(_components.code,{children:`openwork`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Agents → Agent experience`}),` on.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`App Home → Messages Tab`}),` on, with messages and slash commands allowed.`]}),`\n`,_jsxs(_components.li,{children:[`Bot scopes: `,_jsx(_components.code,{children:`app_mentions:read`}),`, `,_jsx(_components.code,{children:`chat:write`}),`, `,_jsx(_components.code,{children:`im:history`}),`, `,_jsx(_components.code,{children:`im:read`}),`, `,_jsx(_components.code,{children:`im:write`}),`, `,_jsx(_components.code,{children:`assistant:write`}),`, and `,_jsx(_components.code,{children:`commands`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Bot events: `,_jsx(_components.code,{children:`app_mention`}),`, `,_jsx(_components.code,{children:`message.im`}),`, `,_jsx(_components.code,{children:`app_home_opened`}),`, `,_jsx(_components.code,{children:`app_context_changed`}),`, `,_jsx(_components.code,{children:`agent_session_stopped`}),`, `,_jsx(_components.code,{children:`agent_session_title_changed`}),`, `,_jsx(_components.code,{children:`app_uninstalled`}),`, and `,_jsx(_components.code,{children:`tokens_revoked`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Use the URLs generated for your connector and deployment:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Path under your public API URL`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Event Subscriptions`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/integrations/slack/\u003cconnectionId>/events`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Interactivity`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/integrations/slack/\u003cconnectionId>/interactions`})})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`/openwork`}),` command`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/integrations/slack/\u003cconnectionId>/commands`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Bot OAuth redirect`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/v1/integrations/slack/oauth/callback`})})]})]})]}),`\n`,_jsx(_components.p,{children:`The events URL must be publicly reachable over HTTPS. Slack verifies it with a challenge. Save the manifest; complete URL verification after saving the signing secret if the first attempt fails.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If Slack rejects `,_jsx(_components.code,{children:`features.agent_view.enabled`}),`, use the agent-view representation already exported by Slack’s manifest editor and verify `,_jsx(_components.strong,{children:`Agent experience`}),` is on in `,_jsx(_components.strong,{children:`Agents`}),`. Do not remove agent view or required events just to make validation pass.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`3-save-the-signing-secret-and-install`,children:`3. Save the signing secret and install`}),`\n`,_jsxs(_components.p,{children:[`In Slack, open `,_jsx(_components.strong,{children:`Basic Information → App Credentials → Signing Secret`}),`. Transfer it directly into `,_jsx(_components.strong,{children:`Slack app signing secret`}),` in the connector and click `,_jsx(_components.strong,{children:`Save secret`}),`. Keep it out of chats, source control, and screenshots shared with others.`]}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Add to Slack`}),`, authorize the correct workspace, and finish within ten minutes. OpenWork rejects an installation that does not grant every required bot scope. A successful installation changes the button to `,_jsx(_components.strong,{children:`Reinstall in Slack`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`In Slack’s `,_jsx(_components.strong,{children:`Event Subscriptions`}),`, retry the challenge if needed. Confirm `,_jsx(_components.strong,{children:`Verified`}),`, then `,_jsx(_components.strong,{children:`Save Changes`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`4-choose-where-replies-go`,children:`4. Choose where replies go`}),`\n`,_jsxs(_components.p,{children:[`Turn on `,_jsx(_components.strong,{children:`Enable @openwork in Slack`}),`. Start with `,_jsx(_components.strong,{children:`Send replies privately during rollout`}),` on: replies move to the invoking member’s DM.`]}),`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Rollout limits`}),`, enter comma-separated channel IDs to restrict channel use, or leave `,_jsx(_components.strong,{children:`Allowed channel IDs`}),` blank to allow all channels. Blank does not automatically invite the bot into every channel. DMs remain available to eligible members. Set the daily request limit and save limits when you change them.`]}),`\n`,_jsx(_components.p,{children:`Channel replies are visible to the channel when private rollout replies are off. Choose the reply mode before asking for personal information from connected services.`}),`\n`,_jsx(Heading,{level:`2`,id:`next`,children:`Next`}),`\n`,_jsxs(_components.p,{children:[`Installing the bot does not link anyone’s account. Each member, including you, follows `,_jsx(_components.a,{href:`/slack/connect-your-account`,children:`Connect your account`}),` and sends a test message.`]}),`\n`,_jsxs(_components.p,{children:[`To pause the rollout, turn off `,_jsx(_components.strong,{children:`Enable @openwork in Slack`}),`. Disabling new requests cannot recall external actions that have already run.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Set up OpenWork in Slack","sidebarTitle":"Set up the Slack app","description":"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.","keywords":["slack","@openwork","slack manifest","slack app","signing secret","add to slack","install slack bot","bot scopes","event subscriptions"],"href":"/slack/set-up-the-slack-app"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Check alpha access and the existing connector","slug":"1-check-alpha-access-and-the-existing-connector","depth":2,"children":[]},{"title":"2. Merge the manifest into the same Slack app","slug":"2-merge-the-manifest-into-the-same-slack-app","depth":2,"children":[]},{"title":"3. Save the signing secret and install","slug":"3-save-the-signing-secret-and-install","depth":2,"children":[]},{"title":"4. Choose where replies go","slug":"4-choose-where-replies-go","depth":2,"children":[]},{"title":"Next","slug":"next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"differentai","siteName":"OpenWork Docs","title":"Set up OpenWork in Slack - OpenWork Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T05:01:51.415Z","originalFileLocation":"slack/set-up-the-slack-app.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenWork Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Set up OpenWork in Slack - OpenWork Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenWork Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://openworklabs.com/docs/slack/set-up-the-slack-app\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://openworklabs.com/docs/images/openwork-social.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Set up OpenWork in Slack - OpenWork Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://openworklabs.com/docs/images/openwork-social.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/differentai/wKsTNhaHes0Tin67/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenWork Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#011627\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"OpenWork — Your AI workspace. Without vendor lock-in.\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"OpenWork — Your AI workspace. Without vendor lock-in.\">\u003clink data-mint-head rel=\"canonical\" href=\"https://openworklabs.com/docs/slack/set-up-the-slack-app\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/slack/set-up-the-slack-app.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://openworklabs.com/#organization\",\"name\":\"OpenWork Docs\",\"url\":\"https://openworklabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/differentai/bbTblqmGCwQ9TUdJ/logo/light.svg?fit=max\u0026auto=format\u0026n=bbTblqmGCwQ9TUdJ\u0026q=85\u0026s=4467903d12836ac81ccb6eef9dbe7bde\"}},{\"@type\":\"WebSite\",\"@id\":\"https://openworklabs.com/docs#website\",\"name\":\"OpenWork Docs\",\"url\":\"https://openworklabs.com/docs\",\"publisher\":{\"@id\":\"https://openworklabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app#webpage\",\"url\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app\",\"name\":\"Set up OpenWork in Slack\",\"description\":\"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.\",\"dateModified\":\"2026-10-29T05:01:51.415Z\",\"isPartOf\":{\"@id\":\"https://openworklabs.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"OpenWork in Slack (private alpha)\",\"item\":\"https://openworklabs.com/docs/slack/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set up OpenWork in Slack\",\"item\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app#article\",\"headline\":\"Set up OpenWork in Slack\",\"name\":\"Set up OpenWork in Slack\",\"description\":\"Administrator setup for @openwork in Slack: merge the manifest into your existing Slack app, save the signing secret, install the bot, and choose where replies go.\",\"url\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app\",\"mainEntityOfPage\":{\"@id\":\"https://openworklabs.com/docs/slack/set-up-the-slack-app#webpage\"},\"image\":\"https://openworklabs.com/docs/images/openwork-social.png\",\"dateModified\":\"2026-10-29T05:01:51.415Z\",\"keywords\":\"slack, @openwork, slack manifest, slack app, signing secret, add to slack, install slack bot, bot scopes, event subscriptions\",\"publisher\":{\"@id\":\"https://openworklabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://openworklabs.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenWork Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenWork Docs","nav":{"global":null,"tabs":[{"tab":"Start here","pages":[{"title":"Start here","href":"/start-here/get-started"}]},{"tab":"Desktop App","pages":[{"title":"Desktop App","href":"/desktop-app/first-task"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"Slack","pages":[{"group":"Connect Slack","pages":[{"title":"Connect Slack to OpenWork","sidebarTitle":"Connect Slack","href":"/slack/connect-slack"}]},{"group":"OpenWork in Slack (private alpha)","pages":[{"title":"OpenWork in Slack","sidebarTitle":"Overview","description":"Mention @openwork in a Slack channel or DM it to work with your own OpenWork connections and permissions. Private alpha for approved organizations.","href":"/slack/overview"},{"title":"Set up OpenWork in Slack","sidebarTitle":"Set up the Slack app","href":"/slack/set-up-the-slack-app"},{"title":"Connect your Slack account to @openwork","sidebarTitle":"Connect your account","description":"Link your own Slack account to OpenWork once, then DM or mention @openwork and confirm it answers.","href":"/slack/connect-your-account"},{"title":"Troubleshoot OpenWork in Slack","sidebarTitle":"Troubleshooting","href":"/slack/troubleshooting"}]}]},{"tab":"AI Gateway","pages":[{"title":"AI Gateway","href":"/ai-gateway/overview"}]},{"tab":"MCP Gateway","pages":[{"title":"MCP Gateway","href":"/cloud/run-in-the-cloud/cloud-mcp"}]},{"tab":"Dashboards","pages":[{"title":"Dashboards","href":"/dashboards/overview"}]},{"tab":"SSO","pages":[{"title":"SSO","href":"/cloud/get-started"}]},{"tab":"Self-host","pages":[{"title":"Self-host","href":"/start-here/self-host"}]},{"tab":"API","pages":[{"title":"API","href":"/api-reference/system/check-den-api-health"}]},{"tab":"Roadmap","pages":[{"title":"Roadmap","href":"/roadmap"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Set up OpenWork in Slack - OpenWork Docs","buildId":"dpl_3pZeXn3XukjzFRgAX73A7GNDfRJ1","deploymentId":"dpl_3pZeXn3XukjzFRgAX73A7GNDfRJ1","dynamics":[],"chunks":[]}