Secure by default uplift #511
No reviewers
Labels
No labels
area:chat
area:core
area:llm
area:routes
area:tools
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
refactor
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sleepy/odysseus!511
Loading…
Reference in a new issue
No description provided.
Delete branch "codex/secure-by-default-uplift"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
127.0.0.1by default viaAPP_BIND, while keeping explicitAPP_BIND=0.0.0.0opt-in for LAN/reverse-proxy deployments.env.exampleso Docker and native quickstarts follow the same loopback-first security posturesrc.secret_storage, migrate legacy plaintext keys on load, and keep API responses maskedWhy
The README already tells users to treat Odysseus like an admin console and prefer loopback binds, but the recommended Docker path published the app on all host interfaces by default. Generic API integrations also kept bearer/header/basic credentials plaintext in
data/integrations.json, despite the app already having encrypted secret storage for similar credentials.Validation
python -m compileall src\\integrations.py routes\\auth_routes.py src\\task_scheduler.pyvenv\\Scripts\\python.exe -m pytest tests/test_security_regressions.py -k "docker_compose_binds_web_ui_to_loopback_by_default or readme_native_quickstart_uses_loopback or integrations_api_keys_are_encrypted_at_rest or integrations_plaintext_keys_migrate_on_load"venv\\Scripts\\python.exe -m pytest tests/test_security_regressions.pyvenv\\Scripts\\python.exe -m pytest tests/test_review_regressions.pydocker compose configconfirms Odysseus now publisheshost_ip: 127.0.0.1Full-suite note:
venv\\Scripts\\python.exe -m pytestcurrently reports 350 passed, 1 skipped, 6 failed on this Windows checkout. The failures appear unrelated to this patch: cookbook POSIX path expectations, mocked Apple Silicon backend expectation, Node ESM import ofS:/...withoutfile://, and an existing task-scheduler mock serialization case.Related PR check
I checked the open PR list. I did not see a direct duplicate for Docker
APP_BINDdefaults or generic API integration key encryption. PR #450 goes the opposite direction for macOS LAN accessibility; this PR keeps LAN access available as an explicit opt-in. PR #236 covers optional SOPS-encrypted env secrets and looks complementary rather than overlapping with runtime integration-key storage.