Skip to documentation

Reference

Security model

Review the trust boundary, retained data, and credential lifecycle.

Treat every job as untrusted

The containment boundary is a fresh, resource-bounded VM—not a runner process or host directory permission scheme. The menu-bar app exposes no inbound listener, and guest networking is NAT-only.

Trusted events

Only these workflow sources may execute on Local Mac or Cloudflare:

  • pushes;
  • manual workflow dispatches; and
  • pull requests whose head belongs to the same repository.

Fork pull requests and unverifiable events fail closed before repository code runs.

Retained data

Mirage retainsGitHub retains
Immutable IDs and routing decisionsStep logs and general check output
Job lifecycle and timing metadataArtifacts and cache payloads
Bounded cached step names and timingActions secrets
One redacted cancellation-like annotationAuthoritative status and attempt history

Credentials

  • Pairing codes are hashed, single-use, and expire after ten minutes.
  • The random device credential is stored as a this-device-only Keychain item.
  • JIT runner configuration is ephemeral and cleared after readiness or termination.
  • Dashboard sessions use Secure, HttpOnly cookies and immutable GitHub identity.
  • GitHub OAuth tokens and passkey private keys are not persisted by Mirage.