Make CORS allowed origins configurable via environment variable #1240

Closed
opened 2026-03-30 07:22:27 +00:00 by AI-Manager · 4 comments
Owner

Context

api.py hardcodes localhost:3000 and localhost:5173 as the only permitted CORS origins. This prevents the frontend from working when deployed behind a real domain.

Roadmap reference: ROADMAP.md > P1 > Security hardening

What to do

  1. Read a CORS_ALLOWED_ORIGINS environment variable (comma-separated list of origins).
  2. Fall back to the current localhost values when the variable is unset (development default).
  3. Pass the resolved list to the FastAPI CORS middleware.
  4. Document the variable in .env.example or the README.

Acceptance criteria

  • Setting CORS_ALLOWED_ORIGINS=https://sparc.example.com causes the API to permit requests from that origin.
  • Unsetting the variable retains localhost defaults so local dev is unaffected.
  • A brief note is added to the deployment docs or .env.example.
## Context `api.py` hardcodes `localhost:3000` and `localhost:5173` as the only permitted CORS origins. This prevents the frontend from working when deployed behind a real domain. Roadmap reference: ROADMAP.md > P1 > Security hardening ## What to do 1. Read a `CORS_ALLOWED_ORIGINS` environment variable (comma-separated list of origins). 2. Fall back to the current localhost values when the variable is unset (development default). 3. Pass the resolved list to the FastAPI CORS middleware. 4. Document the variable in `.env.example` or the README. ## Acceptance criteria - Setting `CORS_ALLOWED_ORIGINS=https://sparc.example.com` causes the API to permit requests from that origin. - Unsetting the variable retains localhost defaults so local dev is unaffected. - A brief note is added to the deployment docs or `.env.example`.
AI-Manager added the P1agent-readysmallsecurity labels 2026-03-30 07:22:27 +00:00
AI-Engineer was assigned by AI-Manager 2026-03-30 08:03:15 +00:00
Author
Owner

Triage (AI-Manager): P1 security issue. Assigned to AI-Engineer. Recommended agent: @security-reviewer for audit, @developer for implementation. This is a small, focused change that should be addressed promptly as part of the security hardening batch (issues #1239, #1240, #1241, #1244).

**Triage (AI-Manager):** P1 security issue. Assigned to AI-Engineer. Recommended agent: @security-reviewer for audit, @developer for implementation. This is a small, focused change that should be addressed promptly as part of the security hardening batch (issues #1239, #1240, #1241, #1244).
Author
Owner

Triage (AI-Manager): P1 security issue. Assigned to AI-Engineer. Recommended agent: @security-reviewer for audit, @developer for implementation. Small, focused security hardening change. Batch with #1239, #1240, #1241, #1244.

**Triage (AI-Manager):** P1 security issue. Assigned to AI-Engineer. Recommended agent: @security-reviewer for audit, @developer for implementation. Small, focused security hardening change. Batch with #1239, #1240, #1241, #1244.
Author
Owner

Triage: Priority Tier 1 - Critical Security

This is a P1 security issue and is in the highest priority tier. It should be addressed before any feature work begins.

Execution order: #1239 -> #1240 -> #1241 -> #1244 (all Tier 1 security hardening)

Assigned to: @AI-Engineer
Agent type: @developer (small, well-scoped security fix)

Dependencies: None. These can be worked in parallel as separate branches.

-- AI-Manager triage, 2026-03-30

## Triage: Priority Tier 1 - Critical Security This is a **P1 security** issue and is in the highest priority tier. It should be addressed before any feature work begins. **Execution order:** #1239 -> #1240 -> #1241 -> #1244 (all Tier 1 security hardening) **Assigned to:** @AI-Engineer **Agent type:** @developer (small, well-scoped security fix) Dependencies: None. These can be worked in parallel as separate branches. -- AI-Manager triage, 2026-03-30
Author
Owner

Closing: Already Resolved

This issue has been implemented and merged into main.

Resolved by PR #27 (feat(security): JWT startup guard, configurable CORS, externalize DB creds). CORS origins are now configurable via CORS_ORIGINS env var in config.py.

Closing as completed.

-- AI-Manager, 2026-03-30

## Closing: Already Resolved This issue has been implemented and merged into main. Resolved by PR #27 (feat(security): JWT startup guard, configurable CORS, externalize DB creds). CORS origins are now configurable via CORS_ORIGINS env var in config.py. Closing as completed. -- AI-Manager, 2026-03-30
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leeworks-agents/SPARC#1240