Connect AgentUse lifecycle events such as approval, completion, and failure to Slack
Channel event names and the channels configuration contract are
experimental and may change without migration as AgentUse adds destinations.
Channels connect AgentUse lifecycle events to external collaboration surfaces. In the current release, Slack is the implemented channel.Use channels when a person should know that an agent needs review, finished successfully, or failed, or when Slack thread replies should continue a run.
Click Install to Workspace or Reinstall to Workspace.
Copy the Bot User OAuth Token. It starts with xoxb-.
Optional: add assistant:write if you want Slack Assistant thread status while a live run is active.Approval channel threads can also accept decisions. For Approve/Reject buttons and comment-by-thread-reply, configure Socket Mode:
export SLACK_APP_TOKEN="xapp-..."
The app-level token needs connections:write. To resume from normal thread replies, enable Slack event subscriptions for message.channels and, if you use private channels, message.groups; add channels:history and/or groups:history bot scopes as needed.To get a channel id:
Open the channel in Slack.
Click the channel name.
Copy the channel id from the channel details panel. It starts with C... for public channels or G... for private channels.
You can also copy a channel link and use the C... or G... value from the URL.Invite the bot to the target channel before sending channel messages. For private channels, this is required.
approval: the agent created an approval request and is waiting for review
completion: the agent finished successfully
failure: the agent ended with an execution error
A run whose blocker is a person (waiting on an approval or review, or rejected by one) does not fire failure. Its live run card settles as run incomplete with the agent’s reason.Use completion, not complete or completed.If events is omitted, AgentUse enables all supported events.completion and failure are terminal run events. A Slack channel that listens for approval, or for both completion and failure, posts a run-start card immediately and updates the same card when the run completes, fails, or waits for approval. Single-outcome channels such as events: [failure] stay terminal-only so they do not leave stale running messages.
Slack uses one concise channel message as the status card and puts approval details in that message’s thread.Approval channel messages include:
Channel card with prompt, session/project metadata, status, and a Review approval button
Thread details with summary, draft, artifact, context, and risk when the agent provides them
Thread actions for Approve, Reject, and Comment when Socket Mode interactivity is enabled
Plain thread replies become comment decisions when Socket Mode message events are enabled
The AgentUse session page (/sessions/<id>) remains the source of truth for review state.Completion channel messages include:
Channel card with agent name, session id, status, and duration
Thread details with the final answer, tool call count, and token count when available
Failure channel messages include:
Channel card with agent name, session id, status, and duration when available
Thread details with the error message and run metadata
When Slack Socket Mode message events are enabled, a reviewer can reply in a completed or failed run channel thread to continue from that session with the reply as the new instruction.For live run cards, AgentUse also tries Slack Assistant thread status while the run is active. This is best effort; Slack may ignore it when the app does not have Assistant support.
Approval Gates use channels only to alert reviewers. Configure the approval policy separately:
approval: truechannels: slack: events: [approval]
See Approval Gates for the approval dashboard, reviewer flow, and Approval API.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"AgentUse","colors":{"primary":"#3B82F6","light":"#F3F4F6","dark":"#0F172A"},"favicon":"https://mintcdn.com/agentuse/gqYNMkx5sAzmtTEy/static/agentuse-logo-small.png?fit=max\u0026auto=format\u0026n=gqYNMkx5sAzmtTEy\u0026q=85\u0026s=e8070bc8b1a81d3078761836bcf10217","styling":{"eyebrows":null,"codeblocks":"system","latex":false},"logo":{"light":"https://mintcdn.com/agentuse/iaipYT4FIPNTql1X/static/agentuse-logo-single-black.svg?fit=max\u0026auto=format\u0026n=iaipYT4FIPNTql1X\u0026q=85\u0026s=2cc04fa19486e51686f04d965af05336","dark":"https://mintcdn.com/agentuse/iaipYT4FIPNTql1X/static/agentuse-logo-single-white.svg?fit=max\u0026auto=format\u0026n=iaipYT4FIPNTql1X\u0026q=85\u0026s=189aa1ddb9f4e2ff130abbf5a7f5a846"},"api":{"playground":{"display":"simple"}},"appearance":{"default":"light","strict":false},"background":{"image":"https://mintlify.s3.us-west-1.amazonaws.com/agentuse/static/background.png","decoration":null,"color":{"light":"#FFFFFF","dark":"#0F172A"}},"navbar":{"links":[],"primary":{"type":"github","href":"https://github.com/agentuse/agentuse"}},"search":{"prompt":"Search documentation..."},"seo":{"metatags":{"og:title":"AgentUse: Open-source agent runtime","og:description":"Own the agents doing your company's work. Define them in Markdown and run them on infrastructure you control.","og:image":"/static/agentuse-logo.png","twitter:card":"summary_large_image","twitter:title":"AgentUse Documentation","twitter:description":"Define agents in Markdown, choose your models, and put consequential actions behind human approval.","twitter:image":"/static/agentuse-logo.png"},"indexing":"navigable"},"footer":{"socials":{"github":"https://github.com/agentuse/agentuse","x":"https://x.com/agentuse"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"agentuse","hasAudioNarration":false,"actualSubdomain":"agentuse","customDomains":["docs.agentuse.io"],"gitSource":{"type":"github","owner":"agentuse","repo":"agentuse","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ad3caa8d3ef82bf1d5958a8","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Building","count":15},{"language":"default","tag":"Running","count":12},{"language":"default","tag":"Reference","count":9},{"language":"default","tag":"Getting Started","count":3}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":[],"page":{"pagePath":"guides/channels","slug":"/guides/channels","pageMetadata":{"title":"Channels","description":"Connect AgentUse lifecycle events such as approval, completion, and failure to Slack","tag":"Experimental","href":"/guides/channels"},"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: \"Connect AgentUse lifecycle events such as approval, completion, and failure to Slack\"\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`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[`Channel event names and the `,_jsx(_components.code,{children:`channels`}),` configuration contract are\nexperimental and may change without migration as AgentUse adds destinations.`]})}),`\n`,_jsx(_components.p,{children:`Channels connect AgentUse lifecycle events to external collaboration surfaces. In the current release, Slack is the implemented channel.`}),`\n`,_jsx(_components.p,{children:`Use channels when a person should know that an agent needs review, finished successfully, or failed, or when Slack thread replies should continue a run.`}),`\n`,_jsx(Heading,{level:`2`,id:`basic-slack-setup`,children:`Basic Slack Setup`}),`\n`,_jsx(_components.p,{children:`Add Slack to the agent frontmatter:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`For explicit event selection:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`completion`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`failure`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` channel_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`C0123456789`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Set a Slack bot token and default channel:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SLACK_BOT_TOKEN`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"xoxb-...\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SLACK_APPROVAL_CHANNEL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"C0123456789\"`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`To get a Slack bot token:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.a,{href:`https://api.slack.com/apps`,children:`api.slack.com/apps`}),` and create or open a Slack app.`]}),`\n`,_jsxs(_components.li,{children:[`Open `,_jsx(_components.strong,{children:`OAuth \u0026 Permissions`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Add the bot token scope `,_jsx(_components.code,{children:`chat:write`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Install to Workspace`}),` or `,_jsx(_components.strong,{children:`Reinstall to Workspace`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Copy the `,_jsx(_components.strong,{children:`Bot User OAuth Token`}),`. It starts with `,_jsx(_components.code,{children:`xoxb-`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Optional: add `,_jsx(_components.code,{children:`assistant:write`}),` if you want Slack Assistant thread status while a live run is active.`]}),`\n`,_jsx(_components.p,{children:`Approval channel threads can also accept decisions. For Approve/Reject buttons and comment-by-thread-reply, configure Socket Mode:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SLACK_APP_TOKEN`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"xapp-...\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The app-level token needs `,_jsx(_components.code,{children:`connections:write`}),`. To resume from normal thread replies, enable Slack event subscriptions for `,_jsx(_components.code,{children:`message.channels`}),` and, if you use private channels, `,_jsx(_components.code,{children:`message.groups`}),`; add `,_jsx(_components.code,{children:`channels:history`}),` and/or `,_jsx(_components.code,{children:`groups:history`}),` bot scopes as needed.`]}),`\n`,_jsx(_components.p,{children:`To get a channel id:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Open the channel in Slack.`}),`\n`,_jsx(_components.li,{children:`Click the channel name.`}),`\n`,_jsxs(_components.li,{children:[`Copy the channel id from the channel details panel. It starts with `,_jsx(_components.code,{children:`C...`}),` for public channels or `,_jsx(_components.code,{children:`G...`}),` for private channels.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`You can also copy a channel link and use the `,_jsx(_components.code,{children:`C...`}),` or `,_jsx(_components.code,{children:`G...`}),` value from the URL.`]}),`\n`,_jsx(_components.p,{children:`Invite the bot to the target channel before sending channel messages. For private channels, this is required.`}),`\n`,_jsx(Heading,{level:`2`,id:`slack-config`,children:`Slack Config`}),`\n`,_jsx(_components.p,{children:`V1 supports one Slack channel per agent.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`approval`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`completion`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`failure`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` channel_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`C0123456789`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Fields:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`channels.slack`}),`: `,_jsx(_components.code,{children:`true`}),` or an object to enable Slack`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`channels.slack.enabled`}),`: set to `,_jsx(_components.code,{children:`false`}),` to temporarily disable Slack`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`channels.slack.events`}),`: event or list of events`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`channels.slack.channel_id`}),`: Slack channel id for this agent`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Slack can be written in any of these forms:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`approval`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` channel_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`C0123456789`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`channel_id`}),` is omitted, AgentUse uses `,_jsx(_components.code,{children:`SLACK_APPROVAL_CHANNEL`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`events`,children:`Events`}),`\n`,_jsx(_components.p,{children:`Supported event names:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`approval`}),`: the agent created an approval request and is waiting for review`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`completion`}),`: the agent finished successfully`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`failure`}),`: the agent ended with an execution error`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`A run whose blocker is a person (waiting on an approval or review, or rejected by one) does not fire `,_jsx(_components.code,{children:`failure`}),`. Its live run card settles as `,_jsx(_components.strong,{children:`run incomplete`}),` with the agent’s reason.`]}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`completion`}),`, not `,_jsx(_components.code,{children:`complete`}),` or `,_jsx(_components.code,{children:`completed`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`events`}),` is omitted, AgentUse enables all supported events.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`completion`}),` and `,_jsx(_components.code,{children:`failure`}),` are terminal run events. A Slack channel that listens for `,_jsx(_components.code,{children:`approval`}),`, or for both `,_jsx(_components.code,{children:`completion`}),` and `,_jsx(_components.code,{children:`failure`}),`, posts a run-start card immediately and updates the same card when the run completes, fails, or waits for approval. Single-outcome channels such as `,_jsx(_components.code,{children:`events: [failure]`}),` stay terminal-only so they do not leave stale running messages.`]}),`\n`,_jsx(Heading,{level:`2`,id:`slack-messages`,children:`Slack Messages`}),`\n`,_jsx(_components.p,{children:`Slack uses one concise channel message as the status card and puts approval details in that message’s thread.`}),`\n`,_jsx(_components.p,{children:`Approval channel messages include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Channel card with prompt, session/project metadata, status, and a Review approval button`}),`\n`,_jsx(_components.li,{children:`Thread details with summary, draft, artifact, context, and risk when the agent provides them`}),`\n`,_jsx(_components.li,{children:`Thread actions for Approve, Reject, and Comment when Socket Mode interactivity is enabled`}),`\n`,_jsxs(_components.li,{children:[`Plain thread replies become `,_jsx(_components.code,{children:`comment`}),` decisions when Socket Mode message events are enabled`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The AgentUse session page (`,_jsx(_components.code,{children:`/sessions/\u003cid>`}),`) remains the source of truth for review state.`]}),`\n`,_jsx(_components.p,{children:`Completion channel messages include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Channel card with agent name, session id, status, and duration`}),`\n`,_jsx(_components.li,{children:`Thread details with the final answer, tool call count, and token count when available`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Failure channel messages include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Channel card with agent name, session id, status, and duration when available`}),`\n`,_jsx(_components.li,{children:`Thread details with the error message and run metadata`}),`\n`]}),`\n`,_jsx(_components.p,{children:`When Slack Socket Mode message events are enabled, a reviewer can reply in a completed or failed run channel thread to continue from that session with the reply as the new instruction.`}),`\n`,_jsx(_components.p,{children:`For live run cards, AgentUse also tries Slack Assistant thread status while the run is active. This is best effort; Slack may ignore it when the app does not have Assistant support.`}),`\n`,_jsx(Heading,{level:`2`,id:`approval-gates`,children:`Approval Gates`}),`\n`,_jsx(_components.p,{children:`Approval Gates use channels only to alert reviewers. Configure the approval policy separately:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`approval`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`channels`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` slack`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`approval`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/guides/approval-gates`,children:`Approval Gates`}),` for the approval dashboard, reviewer flow, and Approval API.`]})]})}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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Channels","description":"Connect AgentUse lifecycle events such as approval, completion, and failure to Slack","tag":"Experimental","href":"/guides/channels"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Basic Slack Setup","slug":"basic-slack-setup","depth":2,"children":[]},{"title":"Slack Config","slug":"slack-config","depth":2,"children":[]},{"title":"Events","slug":"events","depth":2,"children":[]},{"title":"Slack Messages","slug":"slack-messages","depth":2,"children":[]},{"title":"Approval Gates","slug":"approval-gates","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"agentuse","siteName":"AgentUse","title":"AgentUse: Open-source agent runtime","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T18:26:48.658Z","originalFileLocation":"guides/channels.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=\"light\"}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=\"Connect AgentUse lifecycle events such as approval, completion, and failure to Slack\">\u003cmeta data-mint-head name=\"application-name\" content=\"AgentUse\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_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=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"AgentUse: Open-source agent runtime\">\u003cmeta data-mint-head property=\"og:description\" content=\"Own the agents doing your company\u0026#x27;s work. Define them in Markdown and run them on infrastructure you control.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"AgentUse\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.agentuse.io/guides/channels\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://agentuse.mintlify.site/static/agentuse-logo.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=\"AgentUse Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Define agents in Markdown, choose your models, and put consequential actions behind human approval.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://agentuse.mintlify.site/static/agentuse-logo.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=\"/mintlify-assets/_mintlify/favicons/agentuse/FgUbIXQFvc_g6RcW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"AgentUse\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3B82F6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.agentuse.io/guides/channels\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/channels.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.agentuse.io/#organization\",\"name\":\"AgentUse\",\"url\":\"https://docs.agentuse.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/agentuse/iaipYT4FIPNTql1X/static/agentuse-logo-single-black.svg?fit=max\u0026auto=format\u0026n=iaipYT4FIPNTql1X\u0026q=85\u0026s=2cc04fa19486e51686f04d965af05336\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.agentuse.io#website\",\"name\":\"AgentUse\",\"url\":\"https://docs.agentuse.io\",\"publisher\":{\"@id\":\"https://docs.agentuse.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.agentuse.io/guides/channels#webpage\",\"url\":\"https://docs.agentuse.io/guides/channels\",\"name\":\"Channels\",\"description\":\"Connect AgentUse lifecycle events such as approval, completion, and failure to Slack\",\"dateModified\":\"2026-10-06T18:26:48.658Z\",\"isPartOf\":{\"@id\":\"https://docs.agentuse.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.agentuse.io/guides/channels#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.agentuse.io/guides/channels#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Running\",\"item\":\"https://docs.agentuse.io/guides/serve-dashboard\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Channels\",\"item\":\"https://docs.agentuse.io/guides/channels\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.agentuse.io/guides/channels#article\",\"headline\":\"Channels\",\"name\":\"Channels\",\"description\":\"Connect AgentUse lifecycle events such as approval, completion, and failure to Slack\",\"url\":\"https://docs.agentuse.io/guides/channels\",\"mainEntityOfPage\":{\"@id\":\"https://docs.agentuse.io/guides/channels#webpage\"},\"image\":\"https://docs.agentuse.io/static/agentuse-logo.png\",\"dateModified\":\"2026-10-06T18:26:48.658Z\",\"publisher\":{\"@id\":\"https://docs.agentuse.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.agentuse.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"AgentUse\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"AgentUse","nav":{"global":null,"groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Quick Start","href":"/quickstart"},{"title":"Installation","href":"/installation"}],"icon":"rocket"},{"group":"Building","pages":[{"title":"Creating Agents","href":"/guides/creating-agents"},{"title":null,"href":"/guides/coding-agent-integrations"},{"title":"Model Configuration","href":"/guides/model-configuration"},{"title":"Sub-Agents","href":"/guides/subagents"},{"title":null,"href":"/guides/skills"},{"title":null,"href":"/guides/plugins"},{"title":"Agent Design Patterns","href":"/guides/agent-design-patterns"},{"title":"Context Management","href":"/guides/context-management"},{"title":"Manager Agents","tag":"Experimental","href":"/guides/manager-agents"},{"title":"Store","tag":"Experimental","href":"/guides/store"},{"title":"Learning","tag":"Experimental","href":"/guides/learning"},{"title":"Verify","tag":"Experimental","href":"/guides/verify"},{"title":"Replay recorded inputs","href":"/guides/replay"},{"title":"Testing Agents","href":"/guides/testing-agents"},{"title":"Developing AgentUse for Mac","href":"/guides/macos-desktop-development"}],"icon":"hammer"},{"group":"Running","pages":[{"title":"Operations Dashboard","href":"/guides/serve-dashboard"},{"title":"macOS Desktop App","href":"/guides/macos-desktop"},{"title":"Scheduled Agents","href":"/guides/schedule"},{"title":"Webhooks","description":"Trigger agents via HTTP using the serve API","href":"/guides/webhooks"},{"title":"Channels","tag":"Experimental","href":"/guides/channels"},{"title":"Approval Gates","description":"Pause an agent run for human review, then approve, reject, or comment from the AgentUse approval dashboard","href":"/guides/approval-gates"},{"title":"CI/CD","sidebarTitle":"CI/CD","href":"/guides/cicd"},{"title":"Remote Agents","href":"/guides/remote-agents"},{"title":"Self-Hosting","href":"/guides/self-hosting"},{"title":"Agent Revisions","href":"/guides/agent-revisions"},{"title":null,"href":"/guides/session-logs"},{"title":"Sandbox","tag":"Experimental","href":"/guides/sandbox"}],"icon":"play"},{"group":"Reference","pages":[{"title":"CLI Commands","href":"/reference/cli-commands"},{"title":"Configuration Files","href":"/reference/configuration-files"},{"title":"Agent Syntax Reference","href":"/reference/agent-syntax"},{"title":"Model Reference","href":"/reference/models"},{"title":"Built-in Tools","href":"/reference/builtin-tools"},{"title":"Variables","href":"/reference/variables"},{"title":"Session Storage","href":"/reference/session-storage"},{"title":"Chart Blocks","href":"/reference/chart-blocks"},{"title":"Environment Variables","href":"/reference/environment-variables"}],"icon":"code"}]},"basePath":"","title":"AgentUse: Open-source agent runtime","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}