Repository navigation
feat(evault): per-platform rate limits with a control panel page - #1200
Conversation
|
@codex review |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89e59ff826
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…nges and tighten proxy trust guidance
|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
What
evault-core's rate limits were one env-configured value for every platform and every IP, changeable only by a restart. They are now rules managed from a new Rate Limits page in the control panel, applied immediately.
How
evault_rate_limit_ruletable. evault-core keeps them in an in-memory snapshot, reloaded on every admin write and every 30s, so the request path never touches the database. If the database is unavailable the limiter keeps the last rules, or the env defaults; it never fails closed.RATE_LIMIT_PER_PLATFORM/RATE_LIMIT_PER_IPremain as the defaults until a default is set in the dashboard. With an empty table behaviour is unchanged apart from the points below.platformclaim). The JWKS verifier is extracted fromVaultAccessGuardand shared.RATE_LIMIT_ADMIN_SECRETand disabled while that is unset.EVAULT_TRUST_PROXY(default off) for deployments behind a reverse proxy.Behaviour changes to know about
OPTIONSpreflights are no longer counted.scopefield (iporplatform); blocked callers get 403.Deploy
pnpm --filter evault-core build && pnpm --filter evault-core migration:runRATE_LIMIT_ADMIN_SECRETto the same value for evault-core and the control panel.Testing
Not in this PR
passphrase-rate-limiterreads a client-suppliedX-Forwarded-For, so its brute-force guard can be bypassed when evault-core is directly exposed. Separate follow-up.