v2026.09.09

udecode/platev2026.09.09Sep 8, 2026by knu

Upgrading?

AI Summary

Adds outbound proxy support to prevent Agents from reaching internal addresses and hardens deployment defaults.

Key Highlights

  • Enables Smokescreen or custom OUTBOUND_PROXY to block loopback, private-network, and cloud metadata addresses.
  • Scenario imports by URL now have a timeout, size limit, and report fetch failures as validation errors.
  • Docker configurations no longer ship a fixed APP_SECRET_TOKEN, generating a random one on start.
  • TwitterStreamAgent is retired as the Twitter streaming API is shut down.

Breaking Changes

  • The per-Agent proxy option is refused while a proxy is enforced.
  • Agents without a proxy option now honor http_proxy on the net_http backend.

New Features

  • Outbound proxy enforcement for HTTP(S) requests.
  • Scenario import validation and timeout handling.
  • Random secret generation for Docker and rake db:seed.
  • TwitterStreamAgent retirement.

Full Release Notes

# v2026.09.09

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 `proxy` option now honor `http_proxy` on the `net_http` backend, which they previously ignored.
- The Docker configurations no longer ship a fixed `APP_SECRET_TOKEN`.  A random one is generated on container start unless `APP_SECRET_TOKEN` is 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:seed` generates a random admin password and prints it once unless `SEED_PASSWORD` is 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.local` and 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 and `latest`.

Full details:

- https://github.com/huginn/huginn/security/advisories/GHSA-f7cq-gj98-cfjp

**Full Changelog**: https://github.com/huginn/huginn/compare/v2026.09.08...v2026.09.09

Related Repositories