Slack setup is part of assisted onboarding. Polycore provisions the
installation, maps the workspace to your organization, and validates identity
and approval behavior with your team.
Request flow
The control plane resolves the Slack workspace and user before starting an agent turn. The agent sees only the capabilities advertised by connected runners in scope.Assisted setup
1
Connect the Slack workspace
We provision the Polycore Slack installation for the selected workspace and
map its Slack team identity to your Polycore organization.
2
Map people and roles
We connect Slack identities to Polycore users and agree which people should
be able to request work and review pending writes.
3
Choose channel scope
Your team decides where Polycore should be used, which channels may contain
operational data, and whether the app should be invited only when needed.
4
Validate reads
A teammate asks a real question. We confirm project and environment routing,
runner execution, a useful reply, and caller attribution.
5
Validate approval
A representative
write action produces an approval card. We test approval,
denial, stale decisions, and the final audit record.Reads
A Slack read can use a built-in query or a named read action.A read does not require human approval, so least-privilege datastore access
matters. Limit the catalog and downstream identity to data that the intended
Slack audience may retrieve.
Writes and approval cards
When the agent requests a capability markedwrite, the control plane stops
before runner execution and creates a pending approval.
An approval surface identifies:
- The requested capability.
- Project and environment.
- Schema-validated arguments.
- The requesting Slack user.
- The pending request id and current status.
@-mentions owners and admins whose Slack account is linked to
Polycore, up to three, and counts the rest so a long admin list cannot become a
mass ping. An owner or admin with no linked Slack account is named on the card
but is not notified.
The current Slack path checks that the clicking human is an organization owner
or admin. It does not require the approver to be a different person from the
original requester, so an owner or admin may approve their own Slack-initiated
write. When the requester can already approve, the card asks them to decide
and notifies nobody else.
- Approve
- Deny
- Already decided
Polycore atomically records the decision, dispatches the exact pending
invocation to the runner, and posts a plain-language summary of the outcome
back to the request thread (falling back to a compact result preview if
summarization is unavailable).
Conversation context
Polycore groups related Slack messages by thread. Prior request and answer pairs can be supplied to later agent turns within a bounded context budget, so a follow-up such as “and in production?” can retain the meaning of the previous question.Failure behavior
The agent should not fabricate a result when:- No runner is connected for the selected environment.
- A user or workspace is not mapped.
- A capability is unavailable.
- A datastore permission or index is missing.
- The runner or downstream system returns an error.
- A write is still pending or has been denied.
Operational boundaries
Which Slack messages start an agent turn?
Which Slack messages start an agent turn?
The app responds to its configured mention and thread flow. It is not meant
to ingest every message in a workspace.
Can Slack receive a database credential?
Can Slack receive a database credential?
No. The credential is resolved on the runner host. Slack receives only the
request, approval presentation, and final response chosen for that
conversation.
Can the Slack agent approve its own write?
Can the Slack agent approve its own write?
No. The catalog exposes operational capabilities to the agent, not an
approve or deny capability.
Can one request touch more than one environment?
Can one request touch more than one environment?
The agent can make separate governed invocations when the request requires a
comparison. Each invocation records its own target runner and environment
under the same user-facing request.
Production validation
Linked users can request reads and unlinked identities fail before agent
execution.
Default and explicitly named environments route to the intended runners.
Follow-up messages in one thread retain bounded conversation context.
A write cannot execute before a human decision and a denial causes no
downstream change.
Slack responses avoid fields your channel audience should not receive.
Requests, capability invocations, and approval decisions are attributed in the
shared audit model.

