veil

Question the product

Ask why Veil
should exist.

THE SHORT ANSWER

A local clone already keeps unpushed work private. Veil earns its place when a coding agent is doing work you still own: it seals the candidate before Git, reconstructs and checks that exact snapshot—including with private gates the agent cannot edit—and publishes only the exact patch whose digest you approved.

  1. Constrain
  2. Seal
  3. Verify
  4. Approve
  5. Publish
23 direct answers · including the limits

Purpose

Start with whether this product needs to exist at all.

QUse Git

Why not just use a local clone?

For ordinary manual work, you should. An unpushed clone is already private. Veil does not make that fact more true.

Veil becomes useful when a coding agent is doing work you still own: its authority is restricted, one candidate is sealed before Git, and only the exact patch you reviewed can be published.

QVeil adds this

What problem does Veil solve that Git branches do not?

A Git branch records and shares work after it enters repository history. Veil controls the candidate before that point. It separates the coding agent from Git authority, seals one exact result, evaluates that result with pinned public and private gates, and only lets an approved patch digest cross into Git.

QIt depends

Why can’t I let Codex edit my repository and review the diff afterward?

You can, and for low-risk work that may be enough. Veil is for cases where review discipline alone is not the desired control. It removes Git metadata and publication credentials from the agent workspace, destroys the disposable execution view, and verifies a sealed result before release.

QIt depends

Who genuinely needs Veil?

Maintainers and platform teams that need controlled agent work, private acceptance gates, or evidence connecting a base commit, checked result, and published patch. A solo developer making routine edits may not need it.

The public beta accepts public GitHub URLs and clean, already-authenticated local GitHub checkouts, including private repositories. It does not provide hosted private-repository import.

Agent authority

What the coding agent can do—and which authority it never receives.

QVeil adds this

Why does the agent workspace contain no .git directory?

It separates code generation from repository history and publication authority. The agent can edit the working tree it was given, but cannot use that workspace to rewrite history, inspect hidden Git state, commit, or push.

QVeil adds this

Why not simply tell the agent not to commit or push?

Instructions are guidance; missing credentials and missing Git metadata are boundaries. Veil does not rely on the model remembering a policy when the workspace itself can make the prohibited action unavailable.

Sealed result & verification

One immutable candidate, reconstructed and checked away from the agent workspace.

QVeil adds this

What exactly does Veil seal?

Veil seals one candidate result derived from an immutable base commit. Its encrypted record preserves the captured snapshot and provenance; the review evidence binds the patch digest, recipe digest, tool version, and gate outcomes to that result.

Git metadata, publication credentials, Veil’s private state, and evaluator-owned private gate source do not enter the candidate or published patch.

QVeil adds this

What is verification independent from?

It is independent from the mutable agent workspace and from private gates the agent cannot modify. Veil reconstructs the sealed candidate in a separate evaluation view and runs the pinned recipe there.

It is still local verification. The public beta does not claim independence from the host operating system, the installed Veil binary, or a malicious machine administrator.

QVeil adds this

How is this different from running tests locally?

Ordinary local tests run against whatever files currently exist in a working directory. Veil first seals the candidate, reconstructs that exact snapshot in a separate evaluation view, and runs its pinned recipe there with network access disabled.

The resulting status belongs to the sealed result and recipe—not to a directory that may change afterward. Evaluator-owned private gates can also remain unavailable to the agent and outside the published patch.

QIt depends

How is Veil different from GitHub Actions or existing CI?

CI normally begins after code enters Git or a pull request. Veil acts before publication and can run private local gates whose source and output are excluded from the patch. Existing CI should still run after publication; Veil is an additional pre-Git gate, not its replacement.

QIt depends

Can the agent change tests to make bad code pass?

Repository tests are part of the candidate and can be changed, so reviewers must inspect those changes. Veil can also run separately encrypted private gates that the agent cannot edit and that never enter the candidate snapshot or published patch.

QLimit

What happens when a repository has no runnable verification recipe?

Veil reports the result as unchecked; it does not turn a missing test suite into a security guarantee. A maintainer can add a versioned verification recipe or decide whether an unchecked patch is acceptable.

Publication receipt

Approval belongs to one candidate identity, not a mutable directory or session.

QVeil adds this

What guarantees that published code is what passed?

Veil generates publication from the reviewed sealed snapshot—not from a mutable working directory. The publication intent is bound to the current result, mode, branch when applicable, patch SHA-256, and expiry. Before release, Veil reruns the configured recipe and refuses publication if the result, approval details, or generated patch digest no longer match.

The receipt also identifies the immutable base commit, so the approved change cannot silently be applied to a different starting point.

QVeil adds this

Can approval for one result be reused for another?

No. New manual capture, new agent completion, a changed branch, a different publication mode, an expired intent, or a different patch requires a new review and confirmation. Agent-generated text is never approval.

QVeil adds this

What can the signed publication receipt prove later?

The local Ed25519-signed attestation binds the repository, immutable base commit, exact patch digest, recipe digest, tool version, gate outcomes, publication intent, and final publication result. A verifier can detect a modified payload or a patch that does not match the reviewed result.

QVeil adds this

Can the agent publish without me?

The managed agent workspace receives no GitHub publication credentials. Publishing is a separate maintainer action and requires explicit confirmation. Agent completion is never treated as publication approval.

QLimit

What prevents a developer from bypassing Veil and pushing normally?

Nothing on a developer-controlled machine. Veil provides a controlled workflow and evidence; it is not, by itself, an organization-wide enforcement system. Teams would need repository protections and policy enforcement if bypass prevention is required.

Limits & adoption

Where the boundary ends—and whether the extra machinery earns its place.

QLimit

Does Veil hide source code from OpenAI or another model provider?

No. If you authorize a model to work on source code, that provider may receive the code needed for the task. Veil controls the local workspace and publication lifecycle; it does not claim secrecy from an authorized model provider.

QLimit

Does Veil protect code and secrets from my own computer?

No. Your operating-system account, authorized tools, editor, and host can access plaintext while work is active. Veil is not a hardened boundary against the machine owner, host compromise, memory inspection, or forensic recovery.

QLimit

Can Veil safely run any malicious repository?

No. Verification uses the documented macOS sandbox or Bubblewrap boundary, but the public beta does not claim hardened host-wide read isolation or production containment for arbitrary hostile code. Use it with repositories you trust and are authorized to change.

QIt depends

Why encrypt snapshots if the repository is already on my laptop?

Encryption gives Veil durable state that can be retained without leaving objectives, artifacts, and captured results as ordinary plaintext files. It protects a ciphertext-only storage view without the relevant keys. It does not protect against your logged-in OS account while plaintext is in use.

QIt depends

Is the extra complexity worth it?

Not for every change. The cost is additional capture, verification, review, and publication steps. It is justified when agent authority needs narrowing, private gates matter, or the team values a receipt linking what was checked to what was released.

QLimit

What works in the public beta?

The supported path is macOS or Linux, public GitHub URL imports or clean already-authenticated local GitHub checkouts (including private repositories), local manual or Codex-assisted work, recipe-driven checks, signed result attestations, optional encrypted dispatch to a foreground Connector, and local patch or draft-PR publication. Windows, symlinks, submodules, Git LFS, hosted private-repository import, hosted execution, and production hostile-code isolation remain outside the current product claim.

Decision point

Need the boundary?
Test it on a real change.

If you only need a private folder, stop here and use Git. If you need a sealed candidate, private gates, and digest-bound publication, run the local workflow and inspect the signed evidence yourself.

Start locally