When developing a Probot App, you will need to have several different fields in a .env file which specify environment variables. Here are some common use cases:

Environment Variable Programmatic Argument Description
APP_ID new Probot({ appId }) The App ID assigned to your GitHub App. Required

(Example: 1234)

PRIVATE_KEY or PRIVATE_KEY_PATH new Probot({ privateKey }) The contents of the private key for your GitHub App. If you're unable to use multiline environment variables, use base64 encoding to convert the key to a single line string. See the Deployment docs for provider specific usage. When using the PRIVATE_KEY_PATH environment variable, set it to the path of the .pem file that you downloaded from your GitHub App registration.

(Example: path/to/key.pem)

Webhook options
WEBHOOK_PROXY_URL new Server({ webhookProxy }) Allows your local development environment to receive GitHub webhook events. Go to to get started.


WEBHOOK_SECRET new Probot({ secret }) The webhook secret used when creating a GitHub App. 'development' is used as a default, but the value in .env needs to match the value configured in your App settings on GitHub. Note: GitHub marks this value as optional, but for optimal security it's required for Probot apps. Required

(Example: development)

For more on the set up of these items, check out Configuring a GitHub App.

Some less common environment variables are:

Environment Variable Programmatic Argument Description
GHE_HOST new Probot({ Octokit: ProbotOctokit.defaults({ baseUrl }) }) The hostname of your GitHub Enterprise instance.


GHE_PROTOCOL new Probot({ Octokit: ProbotOctokit.defaults({ baseUrl }) }) The protocol of your GitHub Enterprise instance. Defaults to HTTPS. Do not change unless you are certain.

(Example: https)

LOG_FORMAT - By default, logs are formatted for readability in development. You can set this to json in order to disable the formatting
LOG_LEVEL const log = require('pino')({ level }) The verbosity of logs to show when running your app, which can be fatal, error, warn, info, debug, trace or silent. Default: info
LOG_LEVEL_IN_STRING - By default, when using the json format, the level printed in the log records is an int (10, 20, ..). This option tells the logger to print level as a string: {"level": "info"}. Default false
LOG_MESSAGE_KEY const log = require('pino')({ messageKey: 'msg' }) Only relevant when LOG_FORMAT is set to json. Sets the json key for the log message. Default: msg
SENTRY_DSN - Set to a Sentry DSN to report all errors thrown by your app.


PORT new Server({ host }) The port to start the local server on. Default: 3000
HOST new Server({ host }) The host to start the local server on.
WEBHOOK_PATH new Server({ webhookPath }) The URL path which will receive webhooks. Default: /
REDIS_URL new Probot({ redisConfig }) Set to a redis:// url as connection option for ioredis in order to enable cluster support for request throttling.

(Example: redis://

For more information on the formatting conventions and rules of .env files, check out the npm dotenv module's documentation.

Found a mistake or want to help improve this documentation? Suggest changes on GitHub

Get occasional updates on new apps & features.


with by the Probot community

Code licensed ISC Docs licensed CC-BY-4.0