Slack

Connect Factory to Slack and delegate work from channels and direct messages using your organization's delegation configuration.

Mention @Factory in a Slack channel or send Factory a direct message to have Droid investigate, implement, and test work on a remote computer. Droid posts progress and results in the same conversation.

Channel requests use your organization's shared Apps configuration and run as its service account. Direct messages use your personal identity and connectors.

This page covers the Factory Slack app. A personal Slack connector gives Droid tools to use inside sessions; it does not install the app in your workspace.

Warning

If an existing Factory Slack install lacks permission to read images or upload files, rerun its authorization flow to enable those capabilities. A Slack admin may need to approve the updated permissions.

Prerequisites

To install the Factory Slack app and configure Slack delegation, you need:

  • A Factory organization on any paid plan, including individual plans and organization plans.
  • The Manager or Owner role in Factory.
  • Admin access to your Slack workspace and permission to install apps in it.
  • Access to Settings → Delegations in Factory.
  • Service-account access and an active service account with the Git credentials and connectors needed for shared channel work.
  • An Environment for Dynamic compute, or computers owned by that service account for Persistent compute.

Each team member who delegates work must have a Factory account in the connected organization. Their Slack account email must match their Factory account email.

Connect Slack

  1. 1
    Open Slack delegation settings

    Open Settings → Delegations. Under Delegation Apps, find Slack and select Set Up for Org, or Configure if it is already connected.

  2. 2
    Connect or reconnect Slack

    On the Slack setup page, click Connect. For an existing installation, click Manage, then Reconnect to refresh its permissions.

  3. 3
    Authorize Factory's Slack app

    You'll be redirected to Slack. Review the requested permissions and click "Allow" to authorize Factory access to your Slack workspace. If you belong to multiple workspaces, select the workspace you want to connect.

  4. 4
    Confirm the integration

    After authorization, you'll be redirected back to Factory. Verify that the integration status shows as "Connected".

  5. 5
    Add Factory to channels

    Factory must be a member of a channel to respond there. Run /invite @Factory in the channel, or accept Slack's prompt to add Factory the first time you mention it.

Configure shared execution

In Settings → Delegations, under Delegation Configs, select Edit on Apps. Review the default model and reasoning level, custom instructions, plugins, service-account identity, and compute. Follow Configure delegated sessions for the full setup.

Eligible organizations receive a default configuration, service account, and Environment. Review those defaults before use, or complete the configuration wizard if setup could not finish.

This configuration is shared across delegation apps, not scoped to one Slack channel. Its service account supplies the identity and connectors for shared channel delegations, not personal DMs.

Delegate and follow up

Mention @Factory in a thread in a channel where the app has been invited, or send the app a direct message. Include the repository, desired outcome, and how Droid should verify the result:

@Factory Investigate the failing checkout test in the storefront repository. Fix the cause, run the relevant tests, and open a pull request with a summary of the change.

Droid runs the work with the identity appropriate to the conversation. Review its response and any linked pull request. Slack links to the session only when it runs as you. Channel delegations run as the service account, so Slack doesn't link them. DMs run as you, so Slack links to them. Continue with follow-up instructions in the same Slack conversation, or in the code channel if Droid opened one. Check the test results and proposed changes before merging.

In Slack, Droid can:

  • Use the full thread as context when you mention it in a thread.
  • Use supported image attachments from Slack as context.
  • Post messages, generated files, artifacts, and result videos back to Slack.
  • Receive follow-up messages and attachments from Slack in an active session.
  • Handle CI in a subagent when it creates a pull request, so it can respond faster.

The session's model comes from the Apps configuration, or from your personal delegation defaults when organization policy allows it. You can also reference a Slack thread in any Factory chat by pasting its URL.

Code channels

A code channel is a Slack channel dedicated to one Factory session. Instead of following the work in a thread, your team gets a channel for the task. Factory posts its updates there, and the channel shows the repository and branch Factory is working on and a diff of its changes.

Code channels are available for delegated sessions that a person starts. Automation and Incident Response runs stay in their thread. Code channels also depend on Slack's own code channels feature. If your workspace does not have it yet, or your Factory Slack app was installed before code channels were available, sessions stay in the thread. To grant the code channels permission to an existing installation, reconnect the app using the connection steps.

A session moves into a code channel in one of two ways:

  • Droid moves it. Before starting substantial work, such as a multi-step change across several files, a pull request, or extended debugging, Droid opens a code channel named after the task. Droid stays in the thread for questions, small fixes, and conversational replies, or when you ask it to stay there.
  • You ask for one with !new. Post @Factory !new <task> to start a new session in its own code channel. Send @Factory !new in an existing session's thread to move that session into a code channel. In DMs and code channels, you can leave out the @Factory mention.

When a session moves, the original thread gets a "Working on this in #channel" notice. Replies in that thread no longer reach the session, so Droid asks you to send them in the channel instead.

Work in a code channel

  • Post top-level messages in the channel. You do not need to mention @Factory. Droid reads the channel's messages, replies top-level, and stays quiet when a message is not meant for it.
  • Droid keeps the repository and branch shown in the channel current as it switches repositories or branches.
  • When Droid has changes, Slack shows a diff of its branch against the base branch. Factory withholds the diff when it may contain secrets or is binary or too large, and shows a notice instead.
  • Questions from Droid appear in the channel. Answer them with a regular message.

Archive a code channel

When the work is done, ask Droid to archive or wrap up the channel. Droid posts a summary of the outcome, pull request links, and anything left open, then archives the channel. Droid does not archive a channel on its own initiative.

If a code channel has no activity for 7 days, Factory posts a warning and archives the channel 24 hours later unless someone sends a message. Archived channels stay in Slack as a record of the work. To pick the work back up, mention @Factory in the original thread.

Personal DMs and shared channels

The Slack conversation determines whose access Droid uses:

Where you send the requestSession identityCredentials and connectors
A direct message to FactoryYour personal Factory identityYour personal Git credentials and connected apps
An @Factory mention in a channelThe Apps configuration's service accountThat service account's Git credentials and connected apps

Connect the tools you want to use in DMs under your own Factory account. For shared channel work, configure them on the service account. Mentioning Factory in a channel does not pass your personal connectors to the shared session.

A DM still uses the Apps configuration's Environment, instructions, and model defaults. Factory provisions a computer owned by you from that Environment instead of using the service account's computer pool. DMs require the configuration to have an Environment; without one, Factory replies that it cannot start the delegation.

Slack commands

Start a message with a command to control Factory instead of sending a task. In channels, mention @Factory before the command, for example @Factory !help. In DMs and code channels, send the command on its own.

CommandWhat it does
!new <task>Starts a new session for the task in its own code channel. Without a task, Factory opens the code channel so you can describe the work there. In an existing session's thread, !new moves that session into a code channel.
!connectReplies with SSH instructions for the computer running an existing session. Start a session first, then send !connect in its thread or code channel. In channels, only you can see the reply.
!helpLists the available commands.

Send !help and !connect on their own. If a message has any other text, Factory treats it as a normal request.

Best practices

  • Add the Factory app only to channels where development discussions occur.
  • Use threads rather than channel messages when mentioning Factory. For larger tasks, Droid may move the work into a code channel.
  • Provide sufficient context in the Slack thread before mentioning Factory.
  • Regularly review the permissions granted to the Factory app in your Slack settings.

Troubleshooting

Security and Compliance

Visit Factory's Trust Center for compliance documents, certifications, and security resources

Security and Compliance

Review Factory's Privacy Policy and Terms of Service.