Build1 distinct publisher3 min readUpdated
An independent researcher says the CLI uploaded a repository it was told not to read, plus a .env secrets file, verbatim. That is a procurement question, not a benchmark question.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
xAI's Grok Build coding CLI transmits the contents of files it reads, including a .env secrets file, verbatim and unredacted, and separately packages and uploads the entire repository regardless of what the agent actually read, according to an independent AI safety researcher known as Cerblab, whose findings were relayed in a free issue of the Pragmatic Engineer newsletter written by Gergely [4][5][15]. The reason this matters more than the usual agent-tooling squabble is that the destination is durable storage: a Google Cloud Storage bucket named grok-code-session-traces, named verbatim in the binary and in a captured metadata.json [9].
The adoption path is easy to reconstruct. The newsletter describes Grok 4.5 as benchmarking close to Opus 4.8 and GPT 5.5 on coding while costing 60-70 percent less, and says the model is easiest to use through the Grok Build CLI, so that is what many developers reached for [2][3].
The load-bearing evidence is a canary test. Cerblab reports prompting the agent with "reply OK, do not read any files" on a real codebase, after which Grok still uploaded the repository as a git bundle via POST /v1/storage; cloning the captured bundle recovered src/_probe/never_read_canary.txt with its unique marker intact, plus the full git history [6]. On a 12 GB repo of files the agent never read, the storage channel moved 5.10 GiB while the model-turn channel moved 192 KB, a ratio Cerblab puts at roughly 27,800x [7]. That arithmetic checks out, and it is the part that matters: the volume tracks the codebase, not the context window [16]. Even truncated mid-stream, the upload carried something on the order of 40 percent of the tree [17]. No storage upload failed; the only non-200s were a model-usage quota (402/429) on /v1/responses and one unrelated 404 [8].
Two details turn this from a bug report into a policy problem. Cerblab says the mechanism is active by default, was not found in the CLI's install or quickstart materials, and is not disabled by turning off "Improve the model" - /v1/settings still returned trace_upload_enabled: true [10]. And the researcher is careful about scope: none of this proves xAI trains on the data, which is a separate policy question; what is demonstrated is transmission, acceptance and storage [11].
The contrast the newsletter draws is the useful one for anyone writing an internal standard. Every agent ships its context window to whatever server runs the model, and other agents send the parts of the code they read [14]. Cursor, by the newsletter's account, indexes locally, creates embeddings, sends the embeddings, and does not store the user's codebase on its servers - which is the awkward part, given Cursor and Grok now sit inside the same corporate structure [12][1]. The newsletter's own verdict is that storing likely-unencrypted .env files in a GCP bucket is reason enough for a sensible company to ban the CLI [13].
Treat this as an egress decision. Any agentic CLI is a process with network access sitting in a directory that usually contains credentials, customer data and history, and the only defensible way to approve one is to watch its traffic on first run rather than read its landing page.
Worth watching: whether xAI documents the trace upload and makes trace_upload_enabled controllable; whether other researchers reproduce the 12 GB result; and whether anything in the grok-code-session-traces bucket is encrypted at rest [10][7][9].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Cerblab did not find the upload mechanism surfaced in the CLI's install/quickstart materials (noting it was not an exhaustive docs audit), says it is active by default, and says disabling "Improve the model" does not turn it off, with /v1/settings still returning trace_upload_enabled: true.
xAI (Elon Musk's AI company, now part of SpaceX) released the Grok 4.5 model, built by Cursor (an acquisition) and trained on SpaceX GPUs; Cursor and Grok are now combined as part of SpaceX.
Grok 4.5 can be used via API but is easiest used via the Grok Build coding CLI, which is what many developers did.
Cerblab, an independent AI safety researcher, documented that xAI's official Grok Build coding CLI, on a normal consumer login, transmits the contents of files it reads - including a .env secrets file - to xAI verbatim and unredacted, with the secret appearing both in the live model turn (POST /v1/responses) and in a session_state archive uploaded and accepted (HTTP 200) via POST /v1/storage.
Cerblab reports the CLI uploads the whole repository - every tracked file's content plus git history - independent of what the agent reads, packaging the workspace and uploading it via POST /v1/storage.
In Cerblab's test on a real codebase with the prompt "reply OK, do not read any files", Grok uploaded the entire repo as a git bundle (POST /v1/storage returning 200); git cloning the captured bundle recovered src/_probe/never_read_canary.txt with its unique marker verbatim, plus the full git history.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed single-source forensics, no independent reproduction in cluster
The technical core is unusually specific for a single-source story: named endpoints, HTTP status codes, a named canary file recovered from a captured git bundle, two byte volumes whose ratio checks out arithmetically, a bucket name found in both the binary and a captured metadata.json, and a settings value that survives the opt-out toggle. The researcher also bounds his own claim, disclaiming any proof of training use and flagging that his docs review was not exhaustive. What holds the score down is that every artifact reaches the reader through one newsletter quoting one pseudonymous researcher; the third-party analysis by Wes Eklund and the vendor statement are referenced but not present as separate cluster sources, and encryption at rest, retention and access scope are never established.
Release plus vendor remediation confirmed; exposure scale undisclosed
There are real, dated adoption-relevant events: a model release, the CLI described as the primary way to use it with many developers doing so, a vendor-side remote feature flag that paused uploads, and an official response carving out zero-data-retention enterprise accounts. The vendor acting on the finding is meaningful signal that the behaviour was live in shipped builds. But nothing quantifies exposure - no user, seat, repository or organisation counts, no disclosure of how many uploads landed in the bucket, and the newsletter itself questions whether the CLI has enterprise customers at all, so the blast radius stays unmeasured.
Forensics understated, editorial conclusions run ahead of them
The measured core is close to aligned: Cerblab reports what was transmitted, accepted and stored and explicitly refuses to claim training use, and the arithmetic behind the ratio holds. The overshoot sits in the newsletter's framing around that core - an at-rest encryption state assumed as 'likely unencrypted', a jump from that assumption to 'reason enough for any sensible company to ban usage', an unsourced benchmark-parity and 60-70% cost claim, and a rhetorical dismissal of whether enterprise customers exist. Positive but modest, because the concrete allegations are better evidenced than most claims of this kind.
Subscription funnel, pseudonymous researcher, defensive vendor
Three visible incentive structures shape this material. The account is a free bonus issue of a paid newsletter, republishing subscriber content four weeks late with a subscribe call to action, so attention-worthy framing has commercial value to the publisher. The primary evidence comes from a pseudonymous independent safety researcher whose writeup went viral, and the cluster gives no way to assess his affiliations or funding. The vendor side is equally interested: the response reportedly declined to explain the .env and git-history uploads and limited reassurance to zero-data-retention enterprise accounts, and remediation arrived as a silent feature flag rather than disclosure. None of this is disqualifying, but all of it colours emphasis.
Specific and self-limiting findings, but one publisher and no vendor text
Confidence is moderate. The mechanism claims are precise, artifact-backed and internally consistent, and the researcher's own scoping plus the vendor's remediation both point the same way, which is why this sits above a rumour. It cannot go higher while the cluster holds a single publisher, the vendor statement and the corroborating third-party analysis appear only as characterisations, exposure scale is undisclosed, and secondary details - the Cursor-built lineage, benchmark parity, cost advantage, bucket encryption - remain unverified assertions.
build
Grok 4.6 lands on Bedrock at $2/$6, turning an xAI decision into a line item2 distinct publishers
build
Grok 4.6 lands in Copilot two days after launch, and the model picker becomes a procurement problem1 distinct publisher
build
SpaceXAI's new Grok terms make "indirect competitor" a deployment risk1 distinct publisher
product
Wu says Cognition is not for sale. The more useful fact is who bought Cursor last week.1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
1 article · August 19, 2026