HockeyStick Knowledge Base Knowledge Base Open Command Centre

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

EnvironmentManifestApp nameOrigin
Testslack/manifest.test.jsonHockeyStick (Test)https://platform-test.hockeystickai.com
Stagingslack/manifest.jsonHockeyStickhttps://platform-staging.hockeystickai.com
Productionslack/manifest.production.jsonHockeyStickhttps://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=true plus SLACK_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 needs AUTH0_SLACK_CLIENT_SECRET and the model provider key.

The catalogue sets the mode:

  • Read only (hsai.read): rankings, performance, briefs, revenue reads, Diagnose list.
  • Confirmed writes (hsai.read and hsai.write with listed operations): revenue logging, brief drafts and setup, decisions, dispatch.
  • Paid generation: only when generate_brief is listed, paidGeneration is true, ASSISTANT_GENERATION_ACCOUNTING_ENABLED=true and 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.

Settings are read when the API starts. After changing any of them, run the sync workflow with restart_services=true, then rerun the preflight in the container.