RepoShield
Chainlink CRE · Confidential Workflows

Scan a private repo without
trusting us with it.

To tell you whether a repository is hostile, something has to read it — which means holding a token with access to your private repositories, and sending your employer's source code to an LLM. Confidential mode does all of that inside a hardware-isolated enclave. Our servers never see your code. Neither does the node operator running the enclave.

Untrusted

RepoShield servers · CRE node operator

  • Sees the repo name
  • Sees the verdict
  • Sees nothing else

Inside the enclave

AWS Nitro TEE · attested

  • GitHub token, decrypted
  • Gemini key, decrypted
  • Your repository's source
  • Every finding, with evidence

What crosses the boundary

Goes in

  • GitHub token — from the Vault DON, decrypted only in the enclave
  • Gemini API key — same
  • Your repository's source, fetched over confidential-http

Comes out

  • threatScore, verdict
  • findingCount, criticalCount
  • commit, scannedAt

Seven scalar fields. Findings quote your source verbatim, so they never leave — that is the trade you are making.

Where it stands

  1. Workflow compiles against @chainlink/cre-sdk

    SDK 1.20.0, registered with handlerInTee and driven by Runner.

  2. Confidential body executes

    The real handler logic runs against a mocked vault and a recorded transport, asserting that both secrets are read, that every GitHub request carries the vault token, and that no repository source appears in the DON payload.

    log: analyzing reposhield-samples/senior-web3-frontend-task@5ff5b0d — 8 of 8 files read
    log: verdict "danger" (100/100) from 19 findings
    PASS every GitHub request carries the vault token
    PASS leaks no repository source in the DON payload
  3. Compiles to a CRE WASM binary

    Not built on this machine. Run `npm run build` in cre/reposhield.

  4. Simulated in an enclave

    Blocked: cre workflow simulate requires a Chainlink account. Create an API key at app.chain.link → Account Settings, then set CRE_API_KEY and run npm run simulate in cre/reposhield.

  5. Deployed and wired to this app

    Deploy the workflow, then set CRE_WORKFLOW_URL to its HTTP trigger to turn on the confidential option.

Run it yourself

Nothing here needs our infrastructure.

cd cre/reposhield
npm install
npm test          # execute the confidential body
npm run build     # compile to WASM, prints the binary hash
npm run simulate  # needs CRE_API_KEY