#3439·inbox-zero

QUEUE_BACKEND default not applied in Quick Setup .env (regression of #2815)

Author: cardabaCreated Aug 31, 2026Updated Aug 31, 2026

Summary

npx @inbox-zero/cli setup → Quick Setup generates an apps/web/.env with QUEUE_BACKEND= left blank, instead of the intended internal default. The app then crashes on first request with a Zod env validation error and every route returns HTTP 500 until the value is fixed manually.

This looks like a regression of #2815 (closed as COMPLETED in June 2026 with "Fix: Set the default option for that env variable to internal") — the QUEUE_BACKEND: "internal" default is still present in the source (packages/cli/src/main.ts, e.g. around the Quick Setup config object and again in the shared setup flow), but it doesn't make it into the written .env.

Environment

  • CLI version: @inbox-zero/[email protected] (via npx)
  • Docker image: ghcr.io/elie222/inbox-zero:latest
  • Flow: Quick Setup (Docker Compose infra, web app in Docker)
  • OS: Windows 11, Docker Desktop (WSL2 backend)

Repro

  1. npx @inbox-zero/cli setup → choose "Quick setup"
  2. Configure Google OAuth + Gemini as LLM provider
  3. Skip Pub/Sub
  4. Let it finish and start the containers
  5. Open the app → every route returns 500
  6. docker logs <web-container> shows:
    ❌ Invalid environment variables: [
      {
        code: 'invalid_value',
        values: [ 'bullmq', 'internal', 'qstash' ],
        path: [ 'QUEUE_BACKEND' ],
        message: 'Invalid option: expected one of "bullmq"|"internal"|"qstash"'
      }
    ]
  7. Inspecting apps/web/.env: QUEUE_BACKEND= # bullmq | qstash | internal — value never got set.

Workaround

Manually set QUEUE_BACKEND=internal in apps/web/.env and recreate the web/cron containers (docker compose up -d --force-recreate web cron or equivalent). Resolves it immediately — no other symptoms.

Notes

Given QUEUE_BACKEND: "internal" is still hardcoded as the default in main.ts, the bug is likely in how that value is merged into the .env.example template (generateEnvFile/setValue in packages/cli/src/utils.ts) for the Quick Setup code path specifically, rather than the default itself being removed. Happy to provide more detail/logs if useful.