v2026.09.09

abus-aikorea/voice-prov2026.09.09Sep 8, 2026by knu

Upgrading?

AI Summary

Adds outbound proxy support (Smokescreen) to prevent agents from reaching internal addresses and hardens deployment defaults.

Key Highlights

  • Outbound HTTP(S) requests can now be routed through an egress proxy
  • Scenario imports now have timeouts and size limits
  • Docker configurations no longer ship fixed APP_SECRET_TOKEN
  • TwitterStreamAgent retired

Breaking Changes

  • TwitterStreamAgent retired (cannot create new agents using it)
  • Docker images no longer ship a fixed APP_SECRET_TOKEN

New Features

  • Outbound proxy routing (Smokescreen)
  • Scenario import validation (timeout and size limit)
  • Random admin password generation

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