- Add support for routing outbound HTTP(S) requests through an egress proxy via OUTBOUND_PROXY setting or ENABLE_SMOKESCREEN=true to prevent Agents from reaching internal addresses
- Scenario imports by URL now have a timeout and a size limit
- Scenario imports by URL follow redirects and report fetch failures as validation errors instead of server errors
- Agents without a proxy option now honor http_proxy on the net_http backend
- Docker configurations no longer ship a fixed APP_SECRET_TOKEN and instead generate a random one on container start unless explicitly set
- rake db:seed generates a random admin password and prints it once unless SEED_PASSWORD is set
- DataOutputAgent and LiquidOutputAgent now get a random default secret
- Devise paranoid mode is enabled so password reset, unlock and confirmation forms no longer reveal whether an account exists
- Building Docker images from development checkouts no longer copies .env.local and other dotenv files into the image
- Docker images on GHCR and Docker Hub are now tagged with the release version in addition to commit SHA and latest
- TwitterStreamAgent is retired as the Twitter streaming API it depended on was shut down in 2023
- Per-Agent proxy option is refused when an outbound proxy is enforced
From huginn
This release adds a way to keep Agents from reaching internal addresses on shared instances, and hardens several defaults.
Agents that fetch URLs and the Scenario import form request whatever URL a user configures, so on an instance where untrusted users can create Agents, any user could make the server connect to loopback, private-network or cloud metadata addresses. Huginn can now route every outbound HTTP(S) request through an egress proxy that refuses such destinations at connection time: set OUTBOUND_PROXY to a proxy of your own, or set ENABLE_SMOKESCREEN=true with the official Docker images, which bundle Smokescreen and configure it automatically. The per-Agent proxy option is refused while a proxy is enforced. Operators of instances with untrusted users should enable this; single-user instances need not. Agents speaking FTP, IMAP, MQTT or XMPP are not covered. See doc/manual/outbound-requests.md.
Other changes:
- Scenario imports by URL have a timeout and a size limit, follow redirects, and report any fetch failure as a validation error instead of a server error.
- Agents without a
proxyoption now honorhttp_proxyon thenet_httpbackend, which they previously ignored. - The Docker configurations no longer ship a fixed
APP_SECRET_TOKEN. A random one is generated on container start unlessAPP_SECRET_TOKENis set; set it yourself to keep sessions valid across container restarts. Deployments still supplying the previously shipped value get a warning and a generated secret instead. rake db:seedgenerates a random admin password and prints it once unlessSEED_PASSWORDis set.- DataOutputAgent and LiquidOutputAgent get a random default secret.
- Devise paranoid mode is enabled, so the password reset, unlock and confirmation forms no longer reveal whether an account exists.
- TwitterStreamAgent is retired, as the Twitter streaming API it depended on was shut down in 2023. Existing Agents remain loadable but new ones cannot be created.
- Building a Docker image from a development checkout no longer copies
.env.localand other dotenv files into the image. - The Docker images on GHCR and Docker Hub are now also tagged with the release version, e.g.
ghcr.io/huginn/huginn:v2026.09.09, in addition to the commit SHA andlatest.
Full details:
Full Changelog: https://github.com/huginn/huginn/compare/v2026.09.08...v2026.09.09