Skip to content

fix(config): dotenv override existing env#166

Merged
NovakPAai merged 1 commit into
mainfrom
claude/jack-dotenv-override
May 14, 2026
Merged

fix(config): dotenv override existing env#166
NovakPAai merged 1 commit into
mainfrom
claude/jack-dotenv-override

Conversation

@NovakPAai
Copy link
Copy Markdown
Owner

Summary

  • dotenv теперь грузится с { override: true } — значения из .env всегда перекрывают унаследованное окружение процесса.
  • Закрывает root-cause продакшен-инцидента 13.05.2026: после ротации GITHUB_ISSUES_TOKEN форма обратной связи продолжала отдавать 401 «Bad credentials», потому что PM2-демон кэшировал старый токен в собственном окружении, а dotenv по умолчанию не перезаписывает уже существующие переменные.

Почему это важно

Без override любая замена секрета в .env требовала полного pm2 kill && pm2 start под чистым шеллом (env -i). С override достаточно обычного pm2 restart после правки .env.

Что НЕ менял

  • __tests__/setup.ts оставил как есть — там override может поломать env, который CI/vitest конфигурируют вручную.
  • Зависимость dotenv уже в package.json, ничего не добавлял.

Test plan

  • CI зелёный (tsc + lint + unit/integration tests)
  • На staging после мёрджа: подменить GITHUB_ISSUES_TOKEN в .env, pm2 restart flowtask-api (без kill + env -i) — форма обратной связи отправляет issue
  • Никакой регресс с другими env-переменными (DATABASE_URL, JWT_SECRET, и т.д.)

PM2 daemon caches env from its startup shell; dotenv (default no-override)
then silently ignores .env values that conflict. Caused a 2-hour incident
with a revoked GITHUB_ISSUES_TOKEN where only `pm2 kill` recovered.
@NovakPAai NovakPAai merged commit a2adbbe into main May 14, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants