Add Express trust proxy configuration for accurate rate limiting IPs #325

Closed
opened 2026-04-10 09:14:38 -04:00 by pook · 1 comment
Owner

Rate limiting is planned for POST /api/generate (issues #296, #303). In production behind a reverse proxy, req.ip returns the proxy IP, not the client IP, making all users share one rate limit bucket.

Implementation:

  1. In the Express app setup (likely src/index.ts or src/app.ts), add BEFORE any rate limiting middleware:
    typescript
    app.set('trust proxy', 1);

  2. Add comment: // Trust first proxy for accurate client IP in rate limiting behind nginx/Cloudflare

  3. Add a test verifying req.ip reflects X-Forwarded-For header when trust proxy is set

Acceptance criteria:

  • app.set('trust proxy', 1) added before rate limiting middleware registration
  • Test proves req.ip extracts from X-Forwarded-For
  • Only trusts first proxy hop (not blindly trusting all proxies)

Generated by CEO Planner (priority: 2)

Rate limiting is planned for POST /api/generate (issues #296, #303). In production behind a reverse proxy, `req.ip` returns the proxy IP, not the client IP, making all users share one rate limit bucket. Implementation: 1. In the Express app setup (likely `src/index.ts` or `src/app.ts`), add BEFORE any rate limiting middleware: typescript app.set('trust proxy', 1); 2. Add comment: `// Trust first proxy for accurate client IP in rate limiting behind nginx/Cloudflare` 3. Add a test verifying `req.ip` reflects X-Forwarded-For header when trust proxy is set Acceptance criteria: - `app.set('trust proxy', 1)` added before rate limiting middleware registration - Test proves req.ip extracts from X-Forwarded-For - Only trusts first proxy hop (not blindly trusting all proxies) --- *Generated by CEO Planner (priority: 2)*
Author
Owner

Bulk-closed 2026-04-10 during pipeline triage.

Context: CEO agent had created 100 open agent-task issues against compliancebot, largely duplicates of each other and of the 50 currently-open PRs. Root cause traced to a git-push race in agent-worker executor (dispatch jobs collided on branch agent/dispatch/* because jobId prefix truncated to literal "dispatch"). Fix deployed: runId is now threaded from Paperclip shim through /dispatch → TaskJob → executor, and branches are keyed on a 12-char unique run key.

What to do next:

  1. Triage the 50 open PRs at https://192.168.183.110:3000/pook/compliancebot/pulls — many are ready to merge
  2. CEO should halt new task creation until open PRs drop below 10
  3. Surviving kept issues: #313, #314, #315, #341, #342, #350, #351, #352 (PR review/merge tasks)

This issue was superseded, not abandoned. Reopen if still relevant after PR triage.

Bulk-closed 2026-04-10 during pipeline triage. **Context:** CEO agent had created 100 open agent-task issues against compliancebot, largely duplicates of each other and of the 50 currently-open PRs. Root cause traced to a git-push race in agent-worker executor (dispatch jobs collided on branch `agent/dispatch/*` because jobId prefix truncated to literal "dispatch"). Fix deployed: runId is now threaded from Paperclip shim through /dispatch → TaskJob → executor, and branches are keyed on a 12-char unique run key. **What to do next:** 1. Triage the 50 open PRs at https://192.168.183.110:3000/pook/compliancebot/pulls — many are ready to merge 2. CEO should halt new task creation until open PRs drop below 10 3. Surviving kept issues: #313, #314, #315, #341, #342, #350, #351, #352 (PR review/merge tasks) This issue was superseded, not abandoned. Reopen if still relevant after PR triage.
pook closed this issue 2026-04-10 14:47:44 -04:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pook/compliancebot#325
No description provided.