← Files CUARARCHIVED FILE

SECURITY.md

2.71 KB · Oct 2, 2026 · 00:29 UTC

↓ Download file

# Security

## Reporting a vulnerability

Do not open a public issue for a suspected vulnerability. Email
<info@filamentlabs.io> with the affected CUAR version, operating system,
reproduction steps, and potential impact. Do not include credentials, tokens,
raw App Server responses, or account-specific usage data.

## Trust boundaries

CUAR runs as local code with the same operating-system account and execution
constraints as Codex. It is not a privilege boundary.

The normal runtime resolves `codex` through the inherited `PATH`, starts
`codex app-server --stdio` without a shell, initializes the stable protocol,
and sends only `account/rateLimits/read`. It does not send thread, turn, login,
logout, write, nudge, or reset-consumption methods.

CUAR writes only its bounded local reset ledger. It creates the ledger
directory with user-only permissions when possible, writes the file with mode
`0600`, uses a same-directory temporary file and atomic rename, and serializes
cooperating CUAR processes with a short-lived directory lock. Symlinked ledger,
lock, and final cache-directory paths are rejected. The ledger is derived
cache data, not an authentication or account-identity boundary. CUAR uses only
one fixed-name temporary file, removes interrupted temporary writes before the
next transaction, and invalidates its comparison chain after an untrustworthy
report.

`CUAR_CODEX_BIN` is an explicit support-and-test override. Setting it delegates
the same trust to that absolute executable path, so users should not point it
to untrusted code.

`CUAR_TEST_MODE=1` enables the fixture-only `CUAR_TEST_FETCHED_AT` clock
override. These variables can deliberately make a report non-current and must
not be enabled for ordinary use. `CUAR_LEDGER_PATH` is an absolute-path
support-and-test override; in test mode, ledger writes are disabled unless that
override is explicitly supplied. CUAR's bundled skill never sets these
variables.

App Server stdout is treated as untrusted structured input. JSONL lines,
stderr, timeouts, response envelopes, and child cleanup are bounded. Raw
responses and operating-system errors are not copied into public CUAR output.

## Operational limitations

- A malicious process already running as the same user can alter executables,
  environment variables, or local Codex state.
- CUAR projections assume the current average burn continues; they are
  planning estimates, not guarantees.
- Reset observation cannot distinguish every unscheduled OpenAI reset from an
  account switch or coincident banked-reset change.
- OpenAI may change supported App Server behavior independently of CUAR.
- The initial release targets local Codex surfaces with Node.js and shell
  execution available; it does not claim ChatGPT web-only support.

SHA-256: ebd94050b00dceb75d60bfb2f011e42b58932a40c102f055a89524536915fef2