Slack App

Slack Approval Workflow Integration with the Keeper Vault and Endpoint Privilege Manager

circle-info

This integration is currently in PUBLIC PREVIEW. Please open an issuearrow-up-right with feedback or feature requests.

Overview

The Keeper Slack App helps achieve zero standing privilege and streamlines credential workflow requests and approvals directly from Slack. The customer hosts the Slack agent and Commander Service Mode, ensuring that zero knowledge is maintained with end-to-end encryption.

This document describes the installation of the Keeper Slack App using a streamlined setup method that requires the use of Keeper Secrets Manager. If you don't have a Secrets Manager or KeeperPAM license, please contact your Keeper account manager.

Features

Feature
Description

Record Access Requests

Request access to specific Keeper records with justification, custom permissions and access time limits. This includes standard vault records and KeeperPAM resources.

Folder Access Requests

Request access to specific Keeper Shared Folders with justification, custom permissions and access time limits.

One-Time Share Requests

Request for a one-time share, password reset or other dynamic password generation with a self-destructing share link. The one-time share can also be editable, offering bi-directional sharing capabilities.

Endpoint Privilege Manager Approvals

Keeper Endpoint Privilege Manager (KEPM) just-in-time elevation approvals in realtime through a dedicated Slack channel.

SSO Cloud Device Approvals

Perform approvals of SSO Cloud devices directly through Slack, if the Keeper Automator service is not deployed.


Prerequisites

System Requirements

To maintain zero knowledge and full end-to-end encryption, the Keeper Slack App and Commander Service Mode containers are hosted by each customer on their own infrastructure to interact with the Slack cloud service. Commander is used locally to help set everything up.

Requirement
Details

Linux VM

Any VM in the cloud or on-prem which can establish https/443 outbound connections to Slack and Keeper services.

Docker

Docker is the recommended method for setting up the service

Keeper Commander

Service Mode running and accessible

Keeper Secrets Manager

Either Keeper Secrets Manager or KeeperPAM license used for retrieving the secret configuration data

Slack Workspace

Requires admin access to install and configure apps

circle-exclamation

Setup Steps

In the below setup instructions, we'll be using Commander and Slack-App Docker Images (keeper/commanderarrow-up-right and keeper/slack-apparrow-up-right). This integration also leverages Keeper Secrets Manager to secure the configurations used by the services.

Follow these five steps to configure the Slack app:


Step 1. Create Slack App

In this section, you will create the Slack App in your Slack workspace as the administrator and gather the necessary configuration values.

  • As the Slack Admin, go to api.slack.com/appsarrow-up-right

  • Click Create New AppFrom an app manifest

  • Select your workspace

  • Paste the JSON content below into the manifest file

  • Review setting of the slack app and create it.

  • Go to Basic InformationDisplay Information and upload a Keeper icon for your app's profile picture. Below is a 512x512 Keeper icon that can be downloaded for use.

  • On the left side, click on Basic InformationApp-Level TokensGenerate Token and Scopes, and generate an app-level token called "keeper-slack-app" with the connections:write scope. Save the token to use as the "App Token" in the next step.

  • On the left side, click on Install App, click Install to [Workspace], then save the Bot User OAuth Token for the next step.

After creating the app, collect these credentials:

Credential
Location

App Token

Basic Information → App-Level Tokens → Generate

Bot Token

OAuth & Permissions → Bot User OAuth Token

Signing Secret

Basic Information → App Credentials

circle-info

Save the Generated App Token, Bot Token and Signing Secret for Step 4.


Step 2. Create Approvals Channel

  • In your Slack workspace, create a Private channel (e.g., #keeper-vault-approvers)

  • Invite the Keeper bot to the approval channel created:

    • Option 1. In the approvals channel, type /invite @Keeper Security.

    • Option 2. Click the channel name → Settings → Integrations → Add an App → Search for Keeper Security → Add

  • Copy the Channel ID (right-click channel → View Details → copy ID at bottom)

circle-info

Save the Channel ID for Step 4.


Step 3. Commander Service Mode Setup

To enable the service to authenticate and execute commands within the Keeper tenant, an authorized Keeper Commander configuration file must be created. This configuration can be generated on a host computer or workstation.

  • Install Keeper Commander locally on your machine

  • If required, create a new Keeper service account dedicated to this integration, ensuring it has access to the relevant records and folders and the ability to perform record and folder sharing.

  • Login to Commander with the Keeper Service account ([email protected])

  • Complete the authentication process including any 2FA requirements. Once you are fully authenticated, proceed to Step 4.


Step 4. Run Slack App Setup Command

The slack-app-setup command generates a docker-compose.yml file which you will use to operate the Slack App and Commander Service Mode services.

From the Commander shell, type:

Command Line Options

The slack-app-setup command supports the following optional flags for customization:

Parameter
Description
Default Value

--folder-name (optional)

Name for the shared folder

Commander Service Mode - Slack App

--app-name (optional)

Name for the Secrets Manager app

Commander Service Mode - KSM App

--config-record-name (optional)

Name for the Commander config record

Commander Service Mode Docker Config

--slack-record-name (optional)

Name for the Slack config record

Commander Service Mode Slack App Config

--config-path (optional)

Path to config.json file

~/.keeper/config.json

--timeout (optional)

Device timeout setting

30d

--skip-device-setup (optional)

Skip device registration if already configured

false

Example with Custom Names:

The command will guide you through the following prompts:

Phase 1: Docker Service Mode Setup

It automatically configures KSM and uploads the config file required for setting up service mode via Docker.

Service Configuration

Configure the Commander Service port:

Prompt
Description
Example

Port

Port number for Commander Service Mode (1024-65535).

8900

Tunneling Configuration (Optional)

If external access is required, configure one of the following:

Prompt
Description

Ngrok Auth Token

Your ngrok authentication token for public URL generation.

Ngrok Custom Domain

Custom ngrok domain (e.g., myapp.ngrok.io).

Cloudflare Tunnel Token

Cloudflare tunnel token for public URL generation.

Cloudflare Custom Domain

Your Cloudflare domain (e.g., slack.company.com).

circle-exclamation

Phase 2: Slack App Integration Setup

Enter the Slack credentials obtained from Steps 1 and 2:

Prompt
Description
Example

Slack App Token (required)

The xapp- token from Step 1. Must be at least 90 characters.

xapp-1-A0XXXXX-...

Slack Bot Token (required)

The xoxb- token from Step 1. Must be at least 50 characters.

xoxb-1234567890-...

Slack Signing Secret (required)

The signing secret from Step 1. Must be exactly 32 characters.

a1b2c3d4e5f6...

Approvals Channel ID (required)

The channel ID from Step 2.(Required)

C0XXXXXXX

Enable PEDM? (optional)

Enable Endpoint Privilege Manager approvals (y/n).

y

PEDM Polling Interval (optional)

How often to check for PEDM requests in seconds. Default: 120.

120

Enable Device Approvals?(optional)

Enable SSO Cloud device approvals (y/n).

y

Device Approval Polling Interval (optional)

How often to check for device approvals in seconds. Default: 120.

120

circle-info

In order to process Endpoint Privilege Manager approvals and SSO Cloud approvals, the Slack App service user must have administrative permissions "Manage Endpoint Privilege" and "Managing the Keeper Admin Console.

After the command executes successfully, it automatically performs the following actions:

  • Configures persistent device authentication

  • Creates a Shared Folder named “Commander Service Mode – Slack App”

  • Creates a KSM application with access to the shared folder

  • Creates a client device and generates a Base64-encoded configuration value

  • Creates a Docker Config record and uploads the config.json file from the .keeper directory

  • Creates a Slack App Config record containing the Slack App credentials.

  • Upon successful execution, a docker-compose.yml is generated containing both the Commander Service Mode and Slack App services, ready for deployment.

Once setup is complete, ensure that the Commander session is terminated and the local .keeper/config.json file is deleted to prevent device token conflicts.


Step 5. Deploy to Docker Environment

In this section, you will set up a Docker Compose environment on a Linux virtual machine or host where the Commander Service will run.

  • Launch a Linux VM or prepare a Linux host and connect to it via SSH.

  • Install docker and docker-compose (refer to the installation instructions here)

  • Transfer the generated docker-compose.yml file from Step 4 to the target Linux server.

Start up the services on the host machine:

Service Startup Sequence

The services start sequentially:

  1. Commander Service starts first, generates an API key, and saves it along with the service URL to the vault record

  2. Health checks validate the Commander service is running

  3. Slack App starts after health checks pass, automatically retrieving the API key and service URL from the vault record

Verify Successful Startup

Monitor the logs to make sure everything starts up.

  • Check container status:

  • View Commander Service logs:

circle-info

The API key is redacted in Docker logs for security. Both services communicate securely via the shared vault record.

  • View Slack App logs:

If everything is successful, you'll see the messages below:


Command Reference for Requesting User

/keeper-request-record

Request access to a specific Keeper record.

Syntax:

/keeper-request-folder

Request access to a shared folder.

Syntax:

/keeper-one-time-share

Request a one-time share link for a record.

Syntax:


Screenshots

The below screenshots demonstrate the core features of the Keeper Slack App.

Interacting with the Slack App for Requests


Requesting Access to a Record (no UID provided)


Requesting Access to a Record (with UID provided)


Record Access Request - Admin View


Requesting Access to a Folder (with UID provided)


Folder Access Request - Admin View


One-time Share Request for Password Reset


One-Time Share - Admin View with New Record Creation


One-Time Share - Admin View with Search for Existing Record


Endpoint Privilege Manager - Approval for Elevation


SSO Cloud Device Approval - Admin View


Updates

Updating the Commander Service Mode and Slack app Container

To update to the latest version of Commander or the Slack App, follow the steps below to stop the service, update the containers and start up the new containers.


Troubleshooting

Startup Errors

Error
Cause
Solution

Commander Service Mode is prompting for master password

Multiple config.json files are attached to the Vault record

Follow steps 4-5 to run the slack-app-setup command with new folder name again to create a new JSON config file.

[WARN] Warning: Cannot reach Keeper Service Mode

Service Mode not running or wrong URL

Verify the service URL in the vault record is as expected

invalid_auth

Wrong Slack bot token

Verify bot_token starts with xoxb- (not xapp- or xoxp-)

Socket Mode not enabled

App-level token missing or wrong

Generate App-Level Token with connections:write scope


Slack API Errors

Error
Cause
Solution

channel_not_found

Bot not invited to approvals channel

Run /invite @Keeper Commander in the channel

not_in_channel

Bot removed from channel

Re-invite the bot to the channel

missing_scope

Bot lacks required permissions

Reinstall app; ensure scopes: chat:write, commands, im:write, users:read, channels:read

invalid_blocks

Malformed Block Kit message

Check logs for specific block error; usually a data formatting issue

user_not_found

Invalid Slack user ID

User may have been deactivated from workspace


Service Mode Errors

Error
Cause
Solution

Failed to submit command: HTTP 403

API key invalid or missing

Verify api_key in config vault record matches service mode

Failed to submit command: HTTP 404

Wrong API endpoint version

Use V2 endpoint: /api/v2/ (not /api/v1/)

Failed to submit command: HTTP 405

Using wrong HTTP method

Ensure Service Mode is running with queue enabled

Command timed out or failed

Service Mode overloaded or command not registered

Register command in Service Mode; increase timeout

No request_id received from API

Service Mode not using queue/async mode

Restart Service Mode with queue enabled (V2)


Access Grant Errors

Error
Cause
Solution

Record Not Found

Invalid UID or record deleted

Verify the record UID exists in Keeper vault

Folder Not Found

Invalid folder UID

Verify the folder UID exists in Keeper vault

Invalid UID Type (record vs folder)

Used wrong command for item type

Use /keeper-request-folder for folders, /keeper-request-record for records

This user already has time-limited access...

Conflict with existing share

Revoke existing access first, then grant new permission

Share permissions require permanent access

Trying to use duration with Can Share/Edit & Share

Share permissions (Can Share, Edit & Share, Change Owner) are always permanent

User share...failed

Permission conflict on folder

User may have incompatible existing access; revoke and re-grant


Search & Modal Errors

Error
Cause
Solution

No records found matching...

Search query too specific or no matches

Try broader search terms; check record exists in vault

Search command timed out

Service Mode slow or vault very large

Increase max_wait in _poll_for_result() or use more specific search

Error processing search modal submission

Modal data corrupted or expired

Close modal and try again; check logs for specific error

Modal shows "Searching..." forever

Poll result never returned

Check Service Mode logs; verify search command is registered


One-Time Share Errors

Error
Cause
Solution

one-time share links can not be created for PAM records

Commander doesn't support

Request for non-pam records

Share link created but URL not found in response

Unexpected Service Mode response format

Check Service Mode version; verify one-time-share command registered

Failed to create one-time share

Record may not be shareable

Verify user has share permissions on the record


Record Creation Errors

Error
Cause
Solution

Failed to create record

Missing required fields or command error

Ensure title, login, and password are provided

Record created but UID could not be retrieved

Search after creation failed

Record exists but search timed out; manually search for it


KEPM Errors

Error
Cause
Solution

No data returned

KEPM feature not enabled

Enable KEPM in your Keeper enterprise settings. Ensure that your service user has necessary admin permissions.

KEPM sync failed

Service Mode can't reach KEPM server

Check network connectivity and KEPM configuration

Failed to approve/deny KEPM request

Request may have expired

Check if request is still pending; it may have auto-expired

References

Last updated

Was this helpful?