benes is a local HTTP proxy. A report that only works after the reporter already has a shell as the user is still in scope if it escapes the intended bind, leaks credentials off the box, or skips the remote-bind token.
| Line | Fixes accepted |
|---|---|
main |
yes |
Latest published npm package benes |
yes |
| Older tags | no |
If the report is against an old tag, maintainers may ask you to reproduce on main or the latest npm build before triage continues.
Do not file an undisclosed vulnerability as a public GitHub issue.
Use GitHub’s private advisory form on this repository:
https://github.com/Wibias/Benes/security/advisories/new
Security tab → Report a vulnerability. There is no security email. The form is the only channel for undisclosed issues.
Include version or commit, how to reproduce, impact, and the bind address plus auth setup you used. Strip tokens, cookies, auth.json, and account ids from logs and screenshots.
If the form is unreachable, open a public issue that only asks for a private channel. Put no exploit details, secrets, or live targets in that issue.
Default bind is 127.0.0.1:23100. Anything that can reach that port can send completions as the configured providers.
- Loopback does not require
BENES_API_AUTH_TOKEN. "hostname": "0.0.0.0"refuses to start without that token. Every request must then carryx-benes-api-key.- Durable secrets live in
~/.benes/auth.json(mode 0600) and, for ChatGPT,~/.benes/codex-accounts.json. TreatBENES_HOME/~/.benesas credential storage. benes initandbenes syncwrite Codex-native files underCODEX_HOME/~/.codex.benes restoreundoes that. Deleting~/.benesalone does not.
Maintainers review on a best-effort basis. There is no SLA. Typical order:
- Confirm the version or commit.
- Reproduce locally.
- Judge impact and a safe fix.
- Time disclosure if a patch is needed.
Non-sensitive hardening ideas can be public issues or PRs once disclosure is done.
Who handles advisories: MAINTAINERS.md.