From 78ca9207716894c841212df0637aa026c9ee303a Mon Sep 17 00:00:00 2001 From: stumpylog <797416+stumpylog@users.noreply.github.com> Date: Tue, 22 Sep 2026 09:35:10 -0700 Subject: [PATCH] Document outbound connection policy for internal-address settings The internal-address settings now describe that a hostname is blocked if any resolved address is non-public. Guarded requests connect directly without proxy variables, and webhook requests never follow redirects. Co-Authored-By: Claude Opus 5 --- docs/configuration.md | 7 ++++++- docs/usage.md | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index d5ea6e96c..e3e383956 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1576,6 +1576,9 @@ ports. #### [`PAPERLESS_WEBHOOKS_ALLOW_INTERNAL_REQUESTS=`](#PAPERLESS_WEBHOOKS_ALLOW_INTERNAL_REQUESTS) {#PAPERLESS_WEBHOOKS_ALLOW_INTERNAL_REQUESTS} : If set to false, webhooks cannot be sent to internal URLs (e.g., localhost). +A hostname is blocked if any of the addresses it resolves to is non-public. +Webhook requests connect directly, without using the `HTTP_PROXY` or +`HTTPS_PROXY` environment variables, and never follow redirects. Defaults to true, which allows internal requests. @@ -1584,7 +1587,7 @@ ports. #### [`PAPERLESS_EMAIL_ALLOW_INTERNAL_HOSTS=`](#PAPERLESS_EMAIL_ALLOW_INTERNAL_HOSTS) {#PAPERLESS_EMAIL_ALLOW_INTERNAL_HOSTS} : If set to false, incoming mail account connections are blocked when the -configured IMAP hostname resolves to a non-public address (for example, +configured IMAP hostname resolves to any non-public address (for example, localhost, link-local, or RFC1918 private ranges). Defaults to true, which allows internal hosts. @@ -2214,6 +2217,8 @@ used with the OpenAI-compatible backend to target a custom provider or local gat #### [`PAPERLESS_AI_LLM_ALLOW_INTERNAL_ENDPOINTS=`](#PAPERLESS_AI_LLM_ALLOW_INTERNAL_ENDPOINTS) {#PAPERLESS_AI_LLM_ALLOW_INTERNAL_ENDPOINTS} : If set to false, Paperless blocks AI endpoint URLs that resolve to non-public addresses (e.g., localhost, etc). +A hostname is blocked if any of the addresses it resolves to is non-public, and redirects are checked the same way. +Requests to a configured AI endpoint connect directly, without using the `HTTP_PROXY` or `HTTPS_PROXY` environment variables. Defaults to true, which allows internal endpoints. diff --git a/docs/usage.md b/docs/usage.md index 12cdaa921..e8e0254e9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -613,7 +613,7 @@ The following workflow action types are available: - The request headers as key-value pairs For security reasons, webhooks can be limited to specific ports and disallowed from connecting to local URLs. See the relevant -[configuration settings](configuration.md#workflow-webhooks) to change this behavior. If you are allowing non-admins to create workflows, +[configuration settings](configuration.md#workflow-webhooks) to change this behavior. Webhook requests connect directly (proxy environment variables are not used) and do not follow redirects. If you are allowing non-admins to create workflows, you may want to adjust these settings to prevent abuse. ##### Move to Trash {#workflow-action-move-to-trash}