The postgres connection string to connect in the database.
API_URL
API URL address, usually where your DNS will be pointed to. If a prefix is included all endpoints and routes will be available at this prefix.
Local Authentication
Oauth2/OIDC Authentication
Local Authentication manages users and passwords locally and sign JWT access tokens to users.
Environment
Description
AUTH_METHOD
The authentication method to use (local, oidc, saml). Default to local
The Oauth2/OIDC authentication integrates with any identity provider that support these protocols. The users are managed on the identity provider.
Environment
Description
IDP_ISSUER (DEPRECATED)
Identity Provider Issuer URL (Oauth2). Passing _userinfo=1 as query string, it forces to authenticate using the userinfo endpoint.
IDP_CLIENT_ID (DEPRECATED)
Oauth2 Client ID.
IDP_CLIENT_SECRET (DEPRECATED)
Oauth2 Client Secret.
IDP_CLIENT_ASSERTION_FILE (DEPRECATED)
Path to a JWT that authenticates the Oauth2 client in place of IDP_CLIENT_SECRET (RFC 7523 client assertion), such as a Kubernetes service account token that Entra ID trusts. The gateway reads it on each token request. Do not set it with IDP_CLIENT_SECRET. See Azure.
IDP_CUSTOM_SCOPES (DEPRECATED)
Additional Oauth2 scopes to append in the request. Default values are openid, profile and email.
IDP_AUDIENCE (DEPRECATED)
Identity Provider Audience (Oauth2)
IDP_GROUPS_CLAIM (DEPRECATED)
Specifies the claim identifier used to configure group propagation. If not explicitly set, the system defaults to https://app.hoop.dev/groups
The authentication configuration is now handled via Webapp or defined via API directly,
the environment variable with the prefix IDP_ are deprecated and will be removed in upcoming releases.
All fields below are not required but can give you some extra configuration options to attend your needs.
Environment
Default Value
Description
ADMIN_USERNAME (DEPRECATED)
admin
Changes the name of the group to act as the admin role
AUDITOR_USERNAME (DEPRECATED)
auditor
Changes the name of the group to act as the auditor role
API_KEY (DEPRECATED)
When this environment is set, it enables authentication with full administrative privileges. The key must follow this format: {org-id}|{random-string}
ANALYTICS_TRACKING
enabled
Disable the analytics tracking by setting it to disabled
DLP_PROVIDER
gcp
Which DLP provider to use: alcatraz, mspresidio or gcp. alcatraz runs in the agent and needs no other configuration
DLP_MODE
best-effort
The redact mode policy: best-effort or strict. The former makes a best effort to redact the content and the later will return an error in case of any redaction issue.
DEFAULT_AGENT_GRPC_SCHEME
Override the gRPC scheme for the default agent. grpc or grpcs.
DEFAULT_AGENT_GRPC_HOST
Override the default host for the default agent.
DEFAULT_AGENT_GRPC_SKIP_VERIFY
Override the skip verify configuration when the default agent is connecting with the gateway.
DEFAULT_AGENT_GRPC_TLS_CA
The Certificate Authority file to use when connecting with default agent, e.g.: file:// or base64://
DISABLE_SESSIONS_DOWNLOAD
false
Control if the download session is disabled or not
GIN_MODE
release
Turn on (debug) logging of routes
GOOGLE_APPLICATION_CREDENTIALS_JSON
GCP DLP credentials
GRPC_URL
grpc://127.0.0.1:8010
The gRPC URL to advertise to clients.
LOG_ENCODING
json
The encoding of output logs (console)
LOG_GRPC
”1” enables logging gRPC protocol
LOG_LEVEL
info
The verbosity of logs (debug,info,warn,error)
SSH_CLIENT_HOST_KEY
The private key host key to use for the local SSH server client. It should be a key generated in PKCS#8 format encoded as base64.
INTEGRATION_AWS_INSTANCE_ROLE_ALLOW
When this option is set to true, it allow to use AWS instance role when interacting with AWS Connect integration
MSPRESIDIO_ANALYZER_URL
Host and port for MS Presidio Analyzer <host-to-analyzer:port>
MSPRESIDIO_ANONYMIZER_URL
Host and port for MS Presidio Anonymizer <host-to-anonymizer:port>
ORG_MULTI_TENANT
Enable organization multi-tenancy
PLUGIN_AUDIT_PATH
/opt/hoop/sessions
The path where the temporary sessions are stored
STATIC_UI_PATH
/app/ui/public
The path where the UI assets resides
TLS_CERT
The path or value to the certificate server (pem) e.g.: file:// or base64://
TLS_KEY
The path or value to the RSA private key e.g.: file:// or base64://
WEBAPP_USERS_MANAGEMENT
on
Enable the users management in the Webapp. It allows to create, edit and delete users.
WEBHOOK_APPKEY
The application key to send messages to the Svix Webhook provider.
WEBHOOK_APPURL
The Svix Server URL for self hosted setups.
ADMIN_USERNAME, AUDITOR_USERNAME and API_KEY are deprecated and will be removed in upcoming releases.
These roles and credentials can now be managed directly via the Webapp or the API.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hoop.dev - Automated Access and Data Protection","colors":{"primary":"#3E63DD","light":"#8DA2EF","dark":"#3E63DD"},"logo":{"light":"https://mintcdn.com/hoopdev/ndV-rRL4ZXZJLXJY/logo/light.svg?fit=max\u0026auto=format\u0026n=ndV-rRL4ZXZJLXJY\u0026q=85\u0026s=0091927110c2d4309aac8b7862009f98","dark":"https://mintcdn.com/hoopdev/ndV-rRL4ZXZJLXJY/logo/dark.svg?fit=max\u0026auto=format\u0026n=ndV-rRL4ZXZJLXJY\u0026q=85\u0026s=97a884bf002c59bb6af3ddd2b6f3c39f","href":"https://hoop.dev"},"favicon":"https://mintcdn.com/hoopdev/sPLs9WFJMpxuZaYG/favicon.svg?fit=max\u0026auto=format\u0026n=sPLs9WFJMpxuZaYG\u0026q=85\u0026s=de046db57ba72a7e5d7c005a63e5a0c8","appearance":{"default":"light"},"navbar":{"links":[{"href":"https://use.hoop.dev","label":"Sign In"}],"primary":{"type":"button","label":"Get started","href":"https://hoop.dev/start"}},"footer":{"socials":{"x":"https://x.com/hoopdotdev","github":"https://github.com/hoophq","linkedin":"https://www.linkedin.com/company/hoopdev"},"links":[{"header":"Legacy","items":[{"label":"Hoop Gateway","href":"https://hoop.dev/docs/gateway/overview"}]}]},"fonts":{"heading":{"family":"Inter","weight":700},"body":{"family":"Inter"}},"styling":{"codeblocks":"dark","latex":false},"errors":{"404":{"redirect":true}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hoopdev","hasAudioNarration":false,"actualSubdomain":"hoopdev","customDomains":["mintlify.hoop.dev"],"gitSource":{"type":"github","owner":"hoophq","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb884de0444f1ae5756d66","collectionId":"67b24c5e-0f2d-4711-b204-6c5539b5d053","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb884de0444f1ae5756d66"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adb884de0444f1ae5756d66","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"API Reference","count":256},{"language":"default","tag":"Documentation","count":54},{"language":"default","tag":"Sidecar","count":40},{"language":"default","tag":"Reference","count":36},{"language":"default","tag":"Connections","count":25},{"language":"default","tag":"Sidecars","count":25},{"language":"default","tag":"Server Management","count":21},{"language":"default","tag":"Protocols","count":19},{"language":"default","tag":"Runbooks","count":16},{"language":"default","tag":"Sessions","count":15}]},"assistantConfig":{},"hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--hoop-heading:#0F1631;--hoop-body:#1A1A1A;--hoop-muted:#6E6E6E;--hoop-indigo:#3E63DD;--hoop-indigo-text:#3A5BC7;--hoop-indigo-soft:#E6EDFE;--hoop-indigo-dark:#9EB1FF;--hoop-gray-100:#F7F7F7;--hoop-gray-200:#EBEBEB;--hoop-gray-300:#DEDEDE;--hoop-gray-400:#C4C4C4;--hoop-sans:'Inter', system-ui, -apple-system, sans-serif;--hoop-mono:'JetBrains Mono', 'SF Mono', monospace;--sand-100:#F7F7F7;--sand-100-rgb:247, 247, 247;--sand-200:#EBEBEB;--sand-300:#DEDEDE;--sand-400:#C4C4C4;--sand-500:#8E8E8E;--sand-500-rgb:142, 142, 142;--warm-gold:#8DA2EF;--warm-gold-rgb:141, 162, 239;--bronze:#5A5A5A;--bronze-rgb:90, 90, 90;--bronze-dark:#333333;--bronze-dark-rgb:51, 51, 51;--espresso:#0F1631;--espresso-rgb:15, 22, 49;--error:#6E6E6E;--error-rgb:110, 110, 110;--success:#30A46C;--success-rgb:48, 164, 108;--prompt:#8DA2EF;--gradient-dark-start:#0F1631;--gradient-dark-start-rgb:15, 22, 49;--gradient-dark-mid:#141B38;--gradient-dark-end:#1A2142;--mono:'JetBrains Mono', 'SF Mono', monospace;--sans:'Inter', system-ui, -apple-system, sans-serif;--display:'Inter', system-ui, sans-serif}:root:not(.dark) #body-content,:root:not(.dark) #body-content blockquote,:root:not(.dark) #body-content dd,:root:not(.dark) #body-content li,:root:not(.dark) #body-content p,:root:not(.dark) #body-content span,:root:not(.dark) #body-content td{color:var(--hoop-body)!important}:root:not(.dark) #body-content h1,:root:not(.dark) #body-content h2,:root:not(.dark) #body-content h3,:root:not(.dark) #body-content h4,:root:not(.dark) #body-content h5,:root:not(.dark) #body-content h6,:root:not(.dark) #body-content strong{color:var(--hoop-heading)!important;letter-spacing:-.03em}.prose strong{font-weight:600}:root:not(.dark) #header #page-title,:root:not(.dark) #header h1{color:var(--hoop-heading)!important;font-weight:700!important;font-size:2.75rem!important;line-height:1.04!important;letter-spacing:-.04em!important}:root.dark #header #page-title,:root.dark #header h1{font-weight:700!important;font-size:2.75rem!important;line-height:1.04!important;letter-spacing:-.04em!important}#header #page-title~p,#header p:first-of-type{font-size:1.2rem!important;line-height:1.5!important;color:#5a6178!important}:root.dark #header #page-title~p,:root.dark #header p:first-of-type{color:#9ba1b8!important}#page-title{margin-bottom:.75rem!important}#header{padding-bottom:.5rem}:root.dark #body-content h2,:root:not(.dark) #body-content h2{margin-top:2.75rem!important;margin-bottom:1rem!important}:root.dark #body-content h3,:root:not(.dark) #body-content h3{margin-top:2rem!important}html[data-current-path=\"/introduction/getting-started\"] #header #page-title{font-size:3.25rem!important;line-height:1!important;letter-spacing:-.045em!important}html[data-current-path=\"/introduction/getting-started\"] #header #page-title~p,html[data-current-path=\"/introduction/getting-started\"] #header p:first-of-type{font-size:1.35rem!important;max-width:40ch}html[data-current-path=\"/introduction/getting-started\"] #header{padding-bottom:1rem}:root:not(.dark) #body-content a{color:var(--hoop-indigo-text)!important;text-decoration-color:transparent;text-underline-offset:2px;transition:text-decoration-color .15s ease}:root:not(.dark) #body-content a:hover{text-decoration-color:var(--hoop-indigo-text)}:root:not(.dark) #body-content :not(pre)>code{background:var(--hoop-indigo-soft);color:var(--hoop-indigo-text)!important;border-radius:4px;padding:2px 6px;font-size:.875em}:root:not(.dark) #body-content table thead th{color:var(--hoop-heading)!important;font-weight:600}:root:not(.dark) #sidebar a{color:#333;transition:color .15s ease}#sidebar a,.card{border-radius:0!important}:root:not(.dark) #sidebar a:hover{color:var(--hoop-heading)}:root:not(.dark) #sidebar a[data-active=true]{color:var(--hoop-indigo-text);font-weight:500}:root:not(.dark) #navbar{border-bottom:1px solid var(--hoop-gray-200)}:root:not(.dark) .card{border:1px solid var(--hoop-gray-200);transition:border-color .15s ease}:root:not(.dark) .card:hover{border-color:var(--hoop-indigo)}:root:not(.dark) .code-block{border-radius:8px;border:1px solid var(--hoop-gray-200)}:root:not(.dark) #footer{border-top:1px solid var(--hoop-gray-200)}:root:not(.dark) .tabs [data-active=true]{color:var(--hoop-indigo-text);border-color:var(--hoop-indigo)}:root.dark #body-content a{color:var(--hoop-indigo-dark)!important}:root.dark #sidebar a[data-active=true]{color:var(--hoop-indigo-dark);font-weight:500}:root.dark .card:hover{border-color:var(--hoop-indigo)}[class*=rounded-]:not([class*=rounded-full]){border-radius:0!important}#body-content input:not([type=checkbox]):not([type=radio]),#navbar [class~=\"group/search\"],input[type=email],input[type=password],input[type=search],input[type=text],input[type=url]{border-radius:9999px!important}#navbar a [class*=rounded-],#navbar a[class*=rounded-],#navbar button,#navbar button [class*=rounded-],#sidebar a div[class~=rounded-md],.feedback-toolbar a[class*=rounded-],[class*=chat-assistant] div[class*=rounded-],button[class][class*=rounded-]{border-radius:9999px!important}[data-badge]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}::selection{background:rgba(62,99,221,.15)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--hoop-gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--hoop-gray-400)}"}],"page":{"pagePath":"setup/configuration/env-vars","slug":"/setup/configuration/env-vars","pageMetadata":{"title":"Environment Variables","description":"Describe how to configure the Hoop Gateway via environment variables","href":"/setup/configuration/env-vars","hidden":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Describe how to configure the Hoop Gateway via environment variables\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Tab,Table,Tabs,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`basic-configuration`,children:`Basic configuration`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Environment`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`POSTGRES_DB_URI`}),_jsx(_components.td,{children:`The postgres connection string to connect in the database.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`API_URL`}),_jsx(_components.td,{children:`API URL address, usually where your DNS will be pointed to. If a prefix is included all endpoints and routes will be available at this prefix.`})]})]})]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Local Authentication`,id:`local-authentication`,children:[_jsx(_components.p,{children:`Local Authentication manages users and passwords locally and sign JWT access tokens to users.`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Environment`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`AUTH_METHOD`}),_jsxs(_components.td,{children:[`The authentication method to use (`,_jsx(_components.code,{children:`local`}),`, `,_jsx(_components.code,{children:`oidc`}),`, `,_jsx(_components.code,{children:`saml`}),`). Default to `,_jsx(_components.code,{children:`local`})]})]})})]})]}),_jsxs(Tab,{title:`Oauth2/OIDC Authentication`,id:`oauth2%2Foidc-authentication`,children:[_jsx(_components.p,{children:`The Oauth2/OIDC authentication integrates with any identity provider that support these protocols. The users are managed on the identity provider.`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Environment`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_ISSUER (DEPRECATED)`}),_jsxs(_components.td,{children:[`Identity Provider Issuer URL (Oauth2). Passing `,_jsx(_components.code,{children:`_userinfo=1`}),` as query string, it forces to authenticate using the `,_jsx(_components.a,{href:`https://openid.net/specs/openid-connect-core-1_0.html#UserInfo`,children:`userinfo endpoint`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_CLIENT_ID (DEPRECATED)`}),_jsx(_components.td,{children:`Oauth2 Client ID.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_CLIENT_SECRET (DEPRECATED)`}),_jsx(_components.td,{children:`Oauth2 Client Secret.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_CLIENT_ASSERTION_FILE (DEPRECATED)`}),_jsxs(_components.td,{children:[`Path to a JWT that authenticates the Oauth2 client in place of `,_jsx(_components.code,{children:`IDP_CLIENT_SECRET`}),` (RFC 7523 client assertion), such as a Kubernetes service account token that Entra ID trusts. The gateway reads it on each token request. Do not set it with `,_jsx(_components.code,{children:`IDP_CLIENT_SECRET`}),`. See `,_jsx(_components.a,{href:`/setup/configuration/idp/azure#sign-in-without-a-client-secret`,children:`Azure`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_CUSTOM_SCOPES (DEPRECATED)`}),_jsxs(_components.td,{children:[`Additional Oauth2 scopes to append in the request. Default values are `,_jsx(_components.code,{children:`openid`}),`, `,_jsx(_components.code,{children:`profile`}),` and `,_jsx(_components.code,{children:`email`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_AUDIENCE (DEPRECATED)`}),_jsx(_components.td,{children:`Identity Provider Audience (Oauth2)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`IDP_GROUPS_CLAIM (DEPRECATED)`}),_jsxs(_components.td,{children:[`Specifies the claim identifier used to configure group propagation. If not explicitly set, the system defaults to `,_jsx(_components.code,{children:`https://app.hoop.dev/groups`})]})]})]})]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`The authentication configuration is now handled via Webapp or defined via API directly,\nthe environment variable with the prefix `,_jsx(_components.code,{children:`IDP_`}),` are deprecated and will be removed in upcoming releases.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`extra-configuration`,children:`Extra configuration`}),`\n`,_jsx(_components.p,{children:`All fields below are not required but can give you some extra configuration options to attend your needs.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Environment`}),_jsx(_components.th,{children:`Default Value`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ADMIN_USERNAME (DEPRECATED)`}),_jsx(_components.td,{children:`admin`}),_jsxs(_components.td,{children:[`Changes the name of the group to act as the `,_jsx(_components.code,{children:`admin`}),` role`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`AUDITOR_USERNAME (DEPRECATED)`}),_jsx(_components.td,{children:`auditor`}),_jsxs(_components.td,{children:[`Changes the name of the group to act as the `,_jsx(_components.code,{children:`auditor`}),` role`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`API_KEY (DEPRECATED)`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`When this environment is set, it enables authentication with full administrative privileges. The key must follow this format: `,_jsx(_components.code,{children:`{org-id}|{random-string}`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ANALYTICS_TRACKING`}),_jsx(_components.td,{children:`enabled`}),_jsxs(_components.td,{children:[`Disable the analytics tracking by setting it to `,_jsx(_components.code,{children:`disabled`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DLP_PROVIDER`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gcp`})}),_jsxs(_components.td,{children:[`Which DLP provider to use: `,_jsx(_components.code,{children:`alcatraz`}),`, `,_jsx(_components.code,{children:`mspresidio`}),` or `,_jsx(_components.code,{children:`gcp`}),`. `,_jsx(_components.code,{children:`alcatraz`}),` runs in the agent and needs no other configuration`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DLP_MODE`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`best-effort`})}),_jsxs(_components.td,{children:[`The redact mode policy: `,_jsx(_components.code,{children:`best-effort`}),` or `,_jsx(_components.code,{children:`strict`}),`. The former makes a best effort to redact the content and the later will return an error in case of any redaction issue.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DEFAULT_AGENT_GRPC_SCHEME`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Override the gRPC scheme for the default agent. `,_jsx(_components.code,{children:`grpc`}),` or `,_jsx(_components.code,{children:`grpcs`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DEFAULT_AGENT_GRPC_HOST`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override the default host for the default agent.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DEFAULT_AGENT_GRPC_SKIP_VERIFY`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override the skip verify configuration when the default agent is connecting with the gateway.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DEFAULT_AGENT_GRPC_TLS_CA`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`The Certificate Authority file to use when connecting with default agent, e.g.: `,_jsx(_components.code,{children:`file://`}),` or `,_jsx(_components.code,{children:`base64://`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`DISABLE_SESSIONS_DOWNLOAD`}),_jsx(_components.td,{children:`false`}),_jsx(_components.td,{children:`Control if the download session is disabled or not`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GIN_MODE`}),_jsx(_components.td,{children:`release`}),_jsx(_components.td,{children:`Turn on (debug) logging of routes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GOOGLE_APPLICATION_CREDENTIALS_JSON`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GCP DLP credentials`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GRPC_URL`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`grpc://127.0.0.1:8010`})}),_jsx(_components.td,{children:`The gRPC URL to advertise to clients.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`LOG_ENCODING`}),_jsx(_components.td,{children:`json`}),_jsx(_components.td,{children:`The encoding of output logs (console)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`LOG_GRPC`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`”1” enables logging gRPC protocol`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`LOG_LEVEL`}),_jsx(_components.td,{children:`info`}),_jsx(_components.td,{children:`The verbosity of logs (debug,info,warn,error)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`SSH_CLIENT_HOST_KEY`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`The private key host key to use for the local SSH server client. It should be a key generated in `,_jsx(_components.code,{children:`PKCS#8`}),` format encoded as base64.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`INTEGRATION_AWS_INSTANCE_ROLE_ALLOW`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`When this option is set to `,_jsx(_components.code,{children:`true`}),`, it allow to use AWS instance role when interacting with AWS Connect integration`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`MSPRESIDIO_ANALYZER_URL`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Host and port for MS Presidio Analyzer `,_jsx(_components.code,{children:`\u003chost-to-analyzer:port>`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`MSPRESIDIO_ANONYMIZER_URL`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Host and port for MS Presidio Anonymizer `,_jsx(_components.code,{children:`\u003chost-to-anonymizer:port>`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ORG_MULTI_TENANT`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Enable organization multi-tenancy`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`PLUGIN_AUDIT_PATH`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/opt/hoop/sessions`})}),_jsx(_components.td,{children:`The path where the temporary sessions are stored`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`STATIC_UI_PATH`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/app/ui/public`})}),_jsx(_components.td,{children:`The path where the UI assets resides`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`TLS_CERT`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`The path or value to the certificate server (pem) e.g.: `,_jsx(_components.code,{children:`file://`}),` or `,_jsx(_components.code,{children:`base64://`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`TLS_KEY`}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`The path or value to the RSA private key e.g.: `,_jsx(_components.code,{children:`file://`}),` or `,_jsx(_components.code,{children:`base64://`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`WEBAPP_USERS_MANAGEMENT`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`on`})}),_jsx(_components.td,{children:`Enable the users management in the Webapp. It allows to create, edit and delete users.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`WEBHOOK_APPKEY`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`The application key to send messages to the Svix Webhook provider.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`WEBHOOK_APPURL`}),_jsx(_components.td,{}),_jsx(_components.td,{children:`The Svix Server URL for self hosted setups.`})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`ADMIN_USERNAME`}),`, `,_jsx(_components.code,{children:`AUDITOR_USERNAME`}),` and `,_jsx(_components.code,{children:`API_KEY`}),` are deprecated and will be removed in upcoming releases.\nThese roles and credentials can now be managed directly via the Webapp or the API.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Environment Variables","description":"Describe how to configure the Hoop Gateway via environment variables","href":"/setup/configuration/env-vars","hidden":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Basic configuration","slug":"basic-configuration","depth":2,"children":[]},{"title":"Extra configuration","slug":"extra-configuration","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/hoopdev/0abad469b68aca32/scripts.js","/docs/_mintlify/custom/hoopdev/8b86904971d4ca88/scripts/process-connections.js"],"subdomain":"hoopdev","siteName":"Hoop.dev - Automated Access and Data Protection","title":"Environment Variables - Hoop.dev - Automated Access and Data Protection","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T14:15:57.538Z","originalFileLocation":"setup/configuration/env-vars.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Describe how to configure the Hoop Gateway via environment variables\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Environment Variables - Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head property=\"og:description\" content=\"Describe how to configure the Hoop Gateway via environment variables\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hoopdev.mintlify.app/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Environment+Variables\u0026amp;description=Describe+how+to+configure+the+Hoop+Gateway+via+environment+variables\u0026amp;theme=cd9e830ca75131fdfc692d5c\u0026amp;signature=217e68354af099b577c315df33381d2ae1a20b7e60657cd63eb063d4174f4afa\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Environment Variables - Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Describe how to configure the Hoop Gateway via environment variables\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hoopdev.mintlify.app/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Environment+Variables\u0026amp;description=Describe+how+to+configure+the+Hoop+Gateway+via+environment+variables\u0026amp;theme=cd9e830ca75131fdfc692d5c\u0026amp;signature=217e68354af099b577c315df33381d2ae1a20b7e60657cd63eb063d4174f4afa\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/hoopdev/jvt1FQ1AzCynh7ga/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hoop.dev - Automated Access and Data Protection\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3E63DD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/setup/configuration/env-vars.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://mintlify.hoop.dev/#organization\",\"name\":\"Hoop.dev - Automated Access and Data Protection\",\"url\":\"https://mintlify.hoop.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hoopdev/ndV-rRL4ZXZJLXJY/logo/light.svg?fit=max\u0026auto=format\u0026n=ndV-rRL4ZXZJLXJY\u0026q=85\u0026s=0091927110c2d4309aac8b7862009f98\"}},{\"@type\":\"WebSite\",\"@id\":\"https://mintlify.hoop.dev/docs#website\",\"name\":\"Hoop.dev - Automated Access and Data Protection\",\"url\":\"https://mintlify.hoop.dev/docs\",\"publisher\":{\"@id\":\"https://mintlify.hoop.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars#webpage\",\"url\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars\",\"name\":\"Environment Variables\",\"description\":\"Describe how to configure the Hoop Gateway via environment variables\",\"dateModified\":\"2026-10-22T14:15:57.538Z\",\"isPartOf\":{\"@id\":\"https://mintlify.hoop.dev/docs#website\"},\"breadcrumb\":{\"@id\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Setup \u0026 Administration\",\"item\":\"https://mintlify.hoop.dev/docs/setup/architecture\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuration\",\"item\":\"https://mintlify.hoop.dev/docs/setup/configuration/live-data-masking/get-started\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Environment Variables\",\"item\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars#article\",\"headline\":\"Environment Variables\",\"name\":\"Environment Variables\",\"description\":\"Describe how to configure the Hoop Gateway via environment variables\",\"url\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars\",\"mainEntityOfPage\":{\"@id\":\"https://mintlify.hoop.dev/docs/setup/configuration/env-vars#webpage\"},\"dateModified\":\"2026-10-22T14:15:57.538Z\",\"publisher\":{\"@id\":\"https://mintlify.hoop.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://mintlify.hoop.dev/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hoop.dev - Automated Access and Data Protection\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hoop.dev - Automated Access and Data Protection","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/introduction/getting-started"}]},{"anchor":"Hoop Gateway","icon":"server","hidden":true,"groups":[{"group":"Overview","searchable":true,"pages":[{"title":"Overview","description":"The full Hoop platform: web app, agents, session recording, access requests and integrations.","href":"/gateway/overview"}]},{"group":"Features","searchable":true,"pages":[{"title":"Live Data Masking","description":"Automatically detect and mask sensitive data in query results without writing rules","href":"/learn/features/live-data-masking"},{"title":"AI Session Analyzer","description":"Analyze terminal sessions in real time and enforce risk-based actions before execution","href":"/learn/features/ai-session-analyzer"},{"title":"Action Access Requests","description":"Require approval for individual commands before they execute","href":"/learn/features/access-requests/action"},{"title":"Just-in-Time Access Requests","description":"Grant temporary, time-limited access to resources with automatic expiration and approval workflows","href":"/learn/features/access-requests/jit"},{"title":"Access Control","description":"Control who can access which resource roles with group-based permissions","href":"/learn/features/access-control"},{"title":"Attribute-Based Access Control","description":"Apply policies to groups of resource roles using attributes instead of listing every resource role","href":"/learn/features/abac"},{"title":"Workflow Observability","description":"See exactly what AI agents, scripts, and CI/CD jobs did in Hoop, attributed to named identities and grouped by workflow run","href":"/learn/features/workflow-observability"},{"title":"Guardrails","description":"Block dangerous queries before they execute with pattern-based rules","href":"/learn/features/guardrails"},{"title":"Runbooks","description":"Create reusable, parameterized templates for common operations","href":"/learn/features/runbooks"},{"title":"Event Routing","description":"Automatically dispatch a runbook whenever a platform event fires, with full audit and approval coverage.","href":"/learn/features/event-routing"},{"title":"Secrets Management","description":"Securely inject credentials into resource roles without exposing them to users","href":"/learn/features/secrets-manager"},{"title":"Session Recording","description":"Record and playback terminal sessions and entire database resource roles.","href":"/learn/features/session-recording"},{"title":"Parallel Mode","description":"Execute commands across multiple resource roles simultaneously","href":"/learn/features/parallel-mode"},{"title":"MCP Server","description":"Connect AI agents to Hoop with the built-in Model Context Protocol server — every action stays under the same authorization, masking, guardrails, and review controls as a human session","href":"/learn/features/mcp-server"},{"title":"Resource Provisioning Hub","description":"Bulk-provision and manage PostgreSQL roles across every database connected to Hoop — with a plan/apply dry-run workflow and full audit trail.","href":"/learn/features/resource-provisioning"},{"title":"IAM Federation for GCP","description":"Mint per-user OAuth tokens for BigQuery and other GCP resources instead of sharing a single service-account key.","href":"/learn/features/iam-federation-gcp"},{"title":"Bastion SSH","description":"Use standard SSH clients to access Hoop resources with certificate-based authentication.","href":"/learn/features/ssh"}]},{"group":"Clients","searchable":true,"pages":[{"group":"Web App","pages":[{"title":"Web App Overview","description":"Get started with Hoop.dev's powerful web interface for managing secure infrastructure access","href":"/clients/webapp/overview"},{"title":"Creating Resource Roles","description":"Learn how to set up secure connections to your resources through the Hoop.dev web interface","href":"/clients/webapp/creating-resource-roles"},{"title":"Managing Access","description":"Learn how to control and organize access to your resource roles through user groups and permissions","href":"/clients/webapp/managing-access"},{"title":"Monitoring Sessions","description":"Learn how to track and audit resource role usage through the Sessions interface","href":"/clients/webapp/monitoring-sessions"}]},{"title":"Command Line","description":"Install and configure the hoop.dev CLI to interact with your applications.","href":"/install/cli"},{"title":"hoop versions","description":"Manage hoop CLI versions: sync to the connected gateway, upgrade to the latest release, or install any specific version side-by-side.","href":"/clients/cli-versions"},{"title":"hoop resources","description":"Manage and provision PostgreSQL roles from the command line using hoop resources plan, apply, and health.","href":"/clients/cli-resources"},{"title":"hoop admin federation","description":"Manage per-connection IAM federation from the CLI: get, set, delete, and dry-run policies plus admin credentials.","href":"/clients/cli-federation"},{"title":"Hoop Shell Plugins (hsh)","description":"Use ssh and kubectl natively — hsh transparently routes them through your Hoop gateway.","href":"/clients/hsh"},{"title":"Hoop Tunnel","description":"Reach any Hoop-managed database or TCP service by name — psql -h pg-prod.hoop — with authentication, review, and audit still enforced by the gateway.","href":"/clients/hsh-tunnel"}]},{"group":"Quickstart","searchable":true,"pages":[{"title":"Catalog","description":"Setup your environment by selecting your resource type","mode":"wide","href":"/quickstart/overview"},{"group":"Databases","pages":[{"title":"PostgreSQL","description":"A powerful, open-source relational database system known for reliability, feature robustness, and performance.","href":"/quickstart/databases/postgres"},{"title":"MySQL","description":"The world's most popular open-source relational database, offering proven performance, reliability, and ease-of-use.","href":"/quickstart/databases/mysql"},{"title":"MongoDB","description":"A NoSQL document-oriented database that provides high scalability and flexibility for modern applications.","href":"/quickstart/databases/mongodb"},{"title":"DynamoDB","description":"Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability.","href":"/quickstart/databases/dynamodb"},{"title":"Oracle","description":"A multi-model database management system designed for enterprise grid computing and high-performance applications.","href":"/quickstart/databases/oracle"},{"title":"Microsoft SQL Server","description":"A relational database management system developed by Microsoft, offering comprehensive data management and business intelligence capabilities.","href":"/quickstart/databases/mssql"},{"title":"Apache Cassandra","description":"A highly scalable, distributed NoSQL database designed for handling large amounts of data across many servers.","href":"/quickstart/databases/apache-cassandra"},{"title":"BigQuery","description":"A fully managed, serverless data warehouse that enables super-fast SQL queries using Google's infrastructure.","href":"/quickstart/databases/bigquery"},{"title":"Redis","description":"An in-memory data structure store, used as a database, cache, and message broker with support for various data types.","href":"/quickstart/databases/redis"}]},{"group":"AI and LLMs","pages":[{"title":"Claude Code","description":"Proxy Claude Code to ensure sensitive data won’t leak.","href":"/quickstart/ai-and-llms/claude-code"},{"title":"MCP","description":"Proxy MCP to ensure sensitive data won't leak.","href":"/quickstart/ai-and-llms/mcp"},{"title":"MCP Gateway","description":"Protocol-aware MCP proxy with tool-level policy and audit.","href":"/quickstart/ai-and-llms/mcp-gateway"},{"title":"MCP Server Catalog","description":"Every MCP server hoop can proxy, how each one authenticates, and how to configure a server that is not in the list.","href":"/quickstart/ai-and-llms/mcp-servers"},{"title":"Connecting an MCP Client","description":"Point Claude Code, Cursor or any MCP client at an MCP Gateway connection: the endpoint, the token, and both ways to run a stdio server.","href":"/quickstart/ai-and-llms/mcp-connect"}]},{"group":"Cloud Services","pages":[{"group":"AWS","pages":[{"title":"AWS CLI","description":"The AWS Command Line Interface (CLI) is a unified tool to manage your AWS services from the command line.","href":"/quickstart/cloud-services/aws/aws-cli"},{"title":"AWS CloudWatch","description":"A monitoring and observability service that provides data and actionable insights for AWS, hybrid, and on-premises applications and infrastructure resources.","href":"/quickstart/cloud-services/aws/aws-cloudwatch"},{"title":"AWS ECS","description":"Amazon Elastic Container Service (ECS) is a fully managed container orchestration service that helps you easily deploy, manage, and scale containerized applications.","href":"/quickstart/cloud-services/aws/aws-ecs"},{"title":"AWS SSM","description":"AWS SSM script permits managing EC2 instances using AWS SSM via Hoop","href":"/quickstart/cloud-services/aws/aws-ssm"}]},{"group":"Kubernetes","pages":[{"title":"Kubernetes","description":"Manage Kubernetes resources through kubectl commands or native API access. This integration supports both CLI-based workflows and direct interaction with the Kubernetes API for full cluster control.","href":"/quickstart/cloud-services/kubernetes/kubernetes"},{"title":"Kubernetes EKS","description":"Manage Kubernetes resources through kubectl commands or native API access. This integration supports both CLI-based workflows and direct interaction with the Kubernetes API for full cluster control.","href":"/quickstart/cloud-services/kubernetes/kubernetes-eks"}]},{"title":"Git","description":"Access git servers securely through Hoop using SSH. This integration enables secure git operations, repository management, and git server resource access through the Hoop proxy with complete audit trails and access controls. Works with GitHub, GitLab, Gitea, Forgejo, and any SSH-based git server.","href":"/quickstart/cloud-services/git"},{"title":"GitHub","description":"Access GitHub resources securely through Hoop using SSH. This integration enables secure git operations, repository management, and GitHub resource access through the Hoop proxy with complete audit trails and access controls.","href":"/quickstart/cloud-services/github"}]},{"group":"Web Applications","pages":[{"title":"Web Applications and APIs","description":"Web applications and APIs that provide HTTP/HTTPS endpoints for various services, applications, and data access interfaces.","href":"/quickstart/web-applications/webapps-and-apis"},{"title":"HTTP Proxy","description":"Access HTTP/HTTPS endpoints securely through Hoop.dev with intelligent traffic monitoring, automated request/response logging, and comprehensive access controls.","href":"/quickstart/web-applications/http-proxy"},{"title":"Grafana","description":"Access your Grafana monitoring and visualization platform securely through Hoop.dev with comprehensive audit trails, session recording, and intelligent traffic monitoring.","href":"/quickstart/web-applications/grafana-proxy"},{"title":"Kibana","description":"Access your Kibana analytics and visualization platform securely through Hoop.dev with comprehensive audit trails, session recording, and intelligent traffic monitoring.","href":"/quickstart/web-applications/kibana-proxy"}]},{"group":"Development Environments","pages":[{"title":"Ruby on Rails","description":"A web application framework written in Ruby that follows the MVC pattern, providing tools for rapid web development.","href":"/quickstart/development-environments/ruby-on-rails"},{"group":"Python","pages":[{"title":"Python Scripts","description":"A versatile, high-level programming language perfect for scripting, automation, data analysis, and application development.","href":"/quickstart/development-environments/python/python-scripts"},{"title":"Django","description":"A high-level Python web framework that encourages rapid development and clean, pragmatic design with built-in admin interface.","href":"/quickstart/development-environments/python/django-admin"}]},{"title":"PHP Artisan","description":"Laravel Artisan is the command-line interface included with Laravel, providing helpful commands for application development.","href":"/quickstart/development-environments/php-artisan"},{"title":"Elixir IEx","description":"A dynamic, functional language designed for building maintainable and scalable applications, running on the Erlang Virtual Machine.","href":"/quickstart/development-environments/elixir-IEx"},{"title":"Clojure","description":"A dynamic, general-purpose programming language that combines interactive development with efficient infrastructure for multithreaded programming.","href":"/quickstart/development-environments/clojure"},{"title":"Node.js","description":"A JavaScript runtime built on Chrome's V8 engine, enabling server-side JavaScript development with high performance.","href":"/quickstart/development-environments/nodejs"}]},{"title":"Secure Shell (SSH)","description":"A cryptographic network protocol for operating network services securely over an unsecured network, commonly used for remote command-line login.","href":"/quickstart/ssh"},{"title":"Remote Desktop (RDP)","description":"Remote Desktop Protocol (RDP) allows accessing securely remote Windows instances via RDP protocol.","href":"/quickstart/remote-desktop"}]},{"group":"Setup \u0026 Administration","searchable":true,"pages":[{"title":"Architecture","description":"Understand how Hoop's components fit together and how traffic flows through the system.","href":"/setup/architecture"},{"group":"Deployment","pages":[{"title":"Overview","description":"See the options to try out hoop.dev","href":"/setup/deployment/overview"},{"title":"Docker","description":"This deployment leverages `docker compose` to deploy Hoop on local or remote machines for solution assessment.","href":"/setup/deployment/docker-compose"},{"title":"Container Images","description":"The container images Hoop publishes, what each one contains, and how to build your own from the released binaries.","href":"/setup/deployment/container-images"},{"title":"Kubernetes","description":null,"href":"/setup/deployment/kubernetes"},{"title":"Microsoft Presidio","description":null,"href":"/setup/deployment/presidio"},{"title":"Alcatraz","description":null,"href":"/setup/deployment/alcatraz"},{"title":"SPIFFE Agent Identity","description":null,"href":"/setup/deployment/spiffe"},{"title":"AWS","description":"This deployment leverages AWS CloudFormation to automatically create resources and set up the Hoop in your own AWS account.","href":"/setup/deployment/AWS"}]},{"group":"Configuration","pages":[{"group":"Live Data Masking","pages":[{"title":"Get Started","description":"Set up and know better about hoop.dev's Live Data Masking","href":"/setup/configuration/live-data-masking/get-started"},{"title":"Supported Fields","description":"Get to know all the fields that you can use to mask data in your organization.","href":"/setup/configuration/live-data-masking/fields"}]},{"title":"AI Session Analyzer Configuration","description":"Configure an AI provider and risk rules to analyze ad-hoc terminal sessions in real time","href":"/setup/configuration/ai-session-analyzer-configuration"},{"title":"AI Session Analyzer for HTTP Proxy","description":"Configure an AI provider and risk rules to analyze HTTP Proxy traffic per request, in real time","href":"/setup/configuration/ai-session-analyzer-configuration-http-proxy"},{"title":"Action Access Requests Configuration","description":"Configure command-level approval workflows for your resource roles","href":"/setup/configuration/access-requests/action-configuration"},{"title":"JIT Access Requests Configuration","description":"Configure time-based access controls for your resource roles","href":"/setup/configuration/access-requests/jit-configuration"},{"title":"Access Control Configuration","description":"Configure group-based access policies for your resource roles","href":"/setup/configuration/access-control-configuration"},{"title":"ABAC Configuration","description":"Create attributes and scope feature policies by attribute instead of listing every resource role","href":"/setup/configuration/abac-configuration"},{"title":"Guardrails Configuration","description":"Create and manage pattern-based rules to block dangerous queries","href":"/setup/configuration/guardrails-configuration"},{"title":"SQL Guardrail Recipes","description":"Tested regex recipes for complex SQL: tautologies, subqueries, CTEs, joins, and missing WHERE clauses","href":"/setup/configuration/guardrails-sql-recipes"},{"title":"MongoDB Guardrail Recipes","description":"Patterns for MongoDB connections: drops, unscoped deletes, pipeline writes, and server-side JavaScript — for native and Web App access","href":"/setup/configuration/guardrails-mongodb-recipes"},{"title":"Guardrails for HTTP Proxy","description":"Route traffic from a Python service (httpx, bearer tokens) through Hoop to an HTTPS backend, with access control, method restriction, path filtering, header inspection, and payload inspection.","href":"/setup/configuration/guardrails-http"},{"title":"Runbooks Configuration","description":null,"href":"/setup/configuration/runbooks-configuration"},{"title":"Event Routing Configuration","description":"Enable Event Routing, create subscriptions that dispatch runbooks on platform events, and audit dispatch history.","href":"/setup/configuration/event-routing-configuration"},{"title":"MCP Server Configuration","description":"Connect an MCP client to Hoop's gateway, enable OAuth, and run your first tool calls","href":"/setup/configuration/mcp-server-configuration"},{"title":"Resource Provisioning Configuration","description":"Build a database inventory, configure admin credentials, and provision PostgreSQL roles with a plan/apply workflow — in the Web App or via the CLI.","href":"/setup/configuration/resource-provisioning-configuration"},{"title":"IAM Federation for GCP Configuration","description":"Grant the gcloud permissions Hoop needs to mint per-user OAuth tokens for BigQuery and other GCP resources.","href":"/setup/configuration/iam-federation-gcp-configuration"},{"title":"Secrets Manager Configuration","description":"It enables integration with a known secrets manager, allowing the resource role environment variable to be dynamically expanded for each resource role.","href":"/setup/configuration/secrets-manager-configuration"},{"title":"Aws Rds IAM Auth","description":"It enables integration with AWS IAM Auth for RDS instances.","href":"/setup/configuration/rds-iam-auth"},{"title":"Environment Variables","href":"/setup/configuration/env-vars"},{"title":"Reverse Proxy","description":"Deploying Hoop Behind a Reverse Proxy","href":"/setup/configuration/reverse-proxy"},{"group":"Identity Providers","pages":[{"title":"Overview","description":"Connect hoop.dev to your Identity Provider using OIDC or SAML 2.0","href":"/setup/configuration/idp/get-started"},{"title":"Auth0","description":null,"href":"/setup/configuration/idp/auth0"},{"title":"Okta","description":null,"href":"/setup/configuration/idp/okta"},{"title":"Google","description":null,"href":"/setup/configuration/idp/google"},{"title":"Azure","description":null,"href":"/setup/configuration/idp/azure"},{"title":"JumpCloud","description":null,"href":"/setup/configuration/idp/jumpcloud"},{"title":"AWS Cognito","description":null,"href":"/setup/configuration/idp/aws-cognito"},{"title":"OneLogin (SAML 2.0)","description":null,"href":"/setup/configuration/idp/onelogin"},{"title":"Keycloak","description":"Connect hoop.dev to Keycloak using OpenID Connect (OIDC).","href":"/setup/configuration/idp/keycloak"}]}]},{"group":"APIs and Integration","pages":[{"title":"API Keys","description":"Create, rotate, and revoke API keys for headless access to the Hoop Gateway","href":"/setup/apis/api-key"},{"title":"Service Accounts","description":"Configure service accounts by leveraging Oauth2 Client Credentials Grant Type","href":"/setup/apis/service-accounts"},{"title":"Webhooks / SIEM","description":"Forward session events to external systems using runbook hooks.","href":"/setup/apis/webhooks-siem"}]},{"title":"Updating Hoop","description":"Guidance and best practices for updating Hoop components, including version alignment, compatibility considerations, and post-update troubleshooting.","href":"/setup/updating"},{"title":"License Management","description":"Managing License for your Hoop Installation","href":"/setup/license-management"}]},{"group":"Concepts","searchable":true,"pages":[{"title":"Agents","description":"The agent links your private infrastructure to Hoop, acting as a proxy between your network and the central gateway.","href":"/concepts/agents"},{"title":"Resource Roles","description":"The bridge between users and resources","href":"/concepts/resource-roles"}]},{"group":"Integrations","searchable":true,"pages":[{"title":"Slack","description":"Manage access requests directly from your Slack workspace.","href":"/integrations/slack"},{"title":"Teams","description":"Hoop.dev can integrate with Microsoft Teams, sending messages to a channel when a particular event happens.","href":"/integrations/teams"},{"title":"Jira","description":"Automate change management and security workflows by integrating Jira with your infrastructure access requests.","href":"/integrations/jira"},{"title":"SIEM","description":"Forward session events to your SIEM or logging pipeline using runbook hooks.","href":"/integrations/siem"},{"title":"Svix","description":"Integrate with Svix to have wehbooks/SIEM properly configured.","href":"/integrations/svix"},{"title":"AWS Connect","description":"Database Resource Discovery and Automatic Resource Role Creation.","href":"/integrations/aws"},{"title":"Microsoft Presidio","description":"Enable sensitive data detection, masking, and guardrail enforcement using Microsoft Presidio.","href":"/integrations/ms-presidio"}]}]},{"anchor":"Community","icon":"github","href":"https://github.com/hoophq/hoop/discussions"},{"anchor":"Blog","icon":"newspaper","href":"https://hoop.dev/blog"},{"anchor":"API Reference","icon":"square-terminal","pages":[{"title":"API Reference","href":"/api-reference/server-management/get-mcp-oauth-authorization-server-metadata"}]}]},"title":"Environment Variables - Hoop.dev - Automated Access and Data Protection","buildId":"dpl_BtCp1ySSRiZuC61kdwjLNfcZF9iT","deploymentId":"dpl_BtCp1ySSRiZuC61kdwjLNfcZF9iT","dynamics":[],"chunks":[]}