quelltest npm privacy: offline by design
The quelltest npm package runs entirely on your machine: it makes no network requests, has no telemetry, and sends no code to any service. This page lists what each command reads, writes and runs, so you can judge it for a private repository or a regulated environment. The only code that can reach the network is code you supply yourself: your tests, your --command, or the module you pass to --llm.
Does quelltest send my code anywhere?
No. The source of the package contains no HTTP, socket or DNS usage. It uses child_process in exactly two places: to call git (for --diff and gate) and to run your tests (for verify and generate --verify). The MCP server talks to its client over stdin and stdout only.
Network is involved only when you fetch the package itself: npm install and the first npx -y quelltest mcp download it from the npm registry.
What does each command read and write?
| Command | Reads | Writes |
|---|---|---|
find, score | Source files (.js, .jsx, .mjs, .cjs, .ts, .tsx), a coverage file, git history for --diff | Nothing except standard output. SARIF and JSON go to standard output; you redirect them. |
generate | Same as find | With --write: test files and .todo.md notes under tests/quelltest/ (or --destination). |
verify | The test and source files, and a copy of the project | A temporary copy of the project in your OS temp folder, removed afterwards; --handoff FILE if given. |
gate | Test files in the working tree and their versions at the merge-base (through git show) | Nothing. |
mocks | Test and source files, the examples file | Nothing. |
mcp | What the agent asks for through find, verify and gate | Nothing by itself. |
What does verify copy?
By default verify copies the package folder that contains the test and the source into a temporary directory, links node_modules instead of copying it, runs your tests there, and deletes the copy. The copy skips node_modules, .git, coverage, dist, build, .next, .cache and .turbo, but it does include other files in the folder, such as .env files, while the run lasts. If a child process still holds the folder after a timeout, deletion is best effort and the operating system cleans the temp folder later. Your real source and test files are not written; if the project is too large to copy it falls back to in-place mutation with a backup, always restored in a finally block.
Handoff files and SARIF files contain code excerpts and file paths. Treat them like source when you upload them as CI artifacts.
What does the --llm hook do?
generate --llm MODULE loads an ES module you provide and calls its default export for findings the rules cannot handle. quelltest passes it the finding, the source of the function, an import path, the runner and the export information, and expects a test as a string. That module runs in the same process with your privileges; quelltest sends nothing itself, but if your module calls a model API, the function source goes wherever you send it. The returned test must still parse, pass the security gate, pass on the original code and fail on a source mutant, or it is discarded. Do not pass --llm and nothing of this happens.
What does the security gate on generated tests do?
Generated and hook-supplied tests are parsed and rejected if they import anything other than the unit under test (a relative path) and an assertion or test library (node:test, node:assert, assert, vitest, @jest/globals), use dynamic imports, touch process, global or module, call eval or Function, use the network, or use globalThis (except the fetch stub pattern, which is always restored). This is defence in depth, not a sandbox. When you run verify, you run your tests with your permissions, as with npm test.
What runs through my shell?
Only verify --command, which is yours. The test path reaches it through an environment variable (QUELL_TEST), not through string interpolation. Without --command, runners are started directly with Node, with no shell.
How do I report a security problem?
Privately, through GitHub private vulnerability reporting on the quelltest-npm repository or at security@quelltest.com. Running your own tests or --command executing your code is expected behaviour, not a vulnerability.
The Python package has its own privacy model, including an opt-in LLM fallback and a cloud connector: see LLM providers and connector privacy.