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 VariableProgrammatic ArgumentDescription
APP_IDnew Probot({ appId })The App ID assigned to your GitHub App. Required

(Example: 1234)

PRIVATE_KEY or PRIVATE_KEY_PATHnew 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_URLnew Server({ webhookProxy })Allows your local development environment to receive GitHub webhook events. Go to to get started.


WEBHOOK_SECRETnew 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 VariableProgrammatic ArgumentDescription
GHE_HOSTnew Probot({ Octokit: ProbotOctokit.defaults({ baseUrl }) })The hostname of your GitHub Enterprise instance.


GHE_PROTOCOLnew 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_LEVELconst 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_KEYconst 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.


PORTnew Server({ port })The port to start the local server on. Default: 3000
HOSTnew Server({ host })The host to start the local server on.
WEBHOOK_PATHnew Server({ webhookPath })The URL path which will receive webhooks. Default: /
REDIS_URLnew 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