v2026.09.09

facebookresearch/sam-audiov2026.09.09Sep 8, 2026by knu

Upgrading?

AI Summary

Security and deployment hardening release for Huginn, introducing outbound proxy enforcement to prevent Agents from accessing internal addresses and adding timeout limits for Scenario imports.

Key Highlights

  • Added `OUTBOUND_PROXY` support to route all HTTP(S) requests, preventing access to loopback/private/cloud metadata addresses.
  • Added `ENABLE_SMOKESCREEN` for automatic proxy configuration in Docker images.
  • Added timeout and size limits for Scenario imports by URL.
  • Docker images now tagged with release version (e.g., `v2026.09.09`).
  • TwitterStreamAgent retired due to API shutdown.

Breaking Changes

  • Docker configurations no longer ship a fixed `APP_SECRET_TOKEN` (must be set manually).
  • TwitterStreamAgent retired (new Agents cannot be created).

New Features

  • Agents honor `http_proxy` environment variable.
  • Random default admin password generated by `rake db:seed`.
  • Random default secrets for DataOutputAgent and LiquidOutputAgent.
  • Devise paranoid mode enabled.

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