Slack agent
Environments and Slack apps
The three Slack apps and manifests, their URLs, scopes and events, and the runtime settings that switch the agent on.
Environments and Slack apps
Each environment has its own Slack app, created from its own manifest in the repo, with its own secrets. Never point one app at another environment.
Apps and URLs
| Environment | Manifest | App name | Origin |
|---|---|---|---|
| Test | slack/manifest.test.json | HockeyStick (Test) | https://platform-test.hockeystickai.com |
| Staging | slack/manifest.json | HockeyStick | https://platform-staging.hockeystickai.com |
| Production | slack/manifest.production.json | HockeyStick | https://platform.hockeystickai.com |
On each origin:
- Events and interactivity:
/slack/events - Public install page:
/slack/install - Slack install redirect:
/slack/oauth_redirect - Personal account-link callback:
/api/slack/link/callback(registered with the sign-in provider, not with Slack)
Test is the road-test environment, because MCP and the Public API are enabled there.
Scopes and events
Bot scopes: app_mentions:read, assistant:write, chat:write, im:history, im:write, users:read, files:write. No user scopes, no email scope, no channel history.
Bot events: app_mention, message.im, app_home_opened, agent_session_stopped, app_uninstalled, tokens_revoked, team_access_revoked.
The app has App Home (Home and Messages tabs), Slack's agent view with a single suggested prompt, Help, token rotation on, and org-wide deployment enabled for Enterprise Grid.
Runtime settings
The agent is off unless the API has:
SLACK_ENABLED=trueplusSLACK_APP_ID,SLACK_ORIGIN,SLACK_CLIENT_ID,SLACK_CLIENT_SECRET,SLACK_SIGNING_SECRET,SLACK_STATE_SECRET,SLACK_ENCRYPTION_KEY.SLACK_AGENT_RUNTIME_CATALOGUE: the reviewed model bounds, sign-in client and scopes, and optional write operations. Also needsAUTH0_SLACK_CLIENT_SECRETand the model provider key.
The catalogue sets the mode:
- Read only (
hsai.read): rankings, performance, briefs, revenue reads, Diagnose list. - Confirmed writes (
hsai.readandhsai.writewith listed operations): revenue logging, brief drafts and setup, decisions, dispatch. - Paid generation: only when
generate_briefis listed,paidGenerationis true,ASSISTANT_GENERATION_ACCOUNTING_ENABLED=trueand the generation catalogue matches.
Test and Staging settings are delivered by sync-test-env.yml and sync-staging-env.yml. The production sync workflow carries no Slack settings today.
Check the configuration
Inside the API container run:
node dist/scripts/slack-runtime-preflight.js
It prints configuration_ready or blocked, any blockers and warnings, and the capability mode. Exit code 0 means ready, 2 means blocked. Always read warnings too. It does not check seats, funding or live Slack, and it makes no network or database calls.
restart_services=true, then rerun the preflight in the container.