Gitfence

Let contractors ship features without your core code

Hand a contractor the checkout module, not the recommender. They clone, build, test and push with plain git. Your team reviews a normal pull request.

acme/shopon GitHubalice's clone
Everything, exactly as today.Their module to edit, types for the recommender, nothing else.
$ git clone [email protected]:acme/shop.git$ git clone https://gitfence.dev/acme/shop.git

Example contractor view: they can edit src/checkout/, read the rest of src/ and .github/, get core/recommender/ as types only, and have no access to core/fraud-model/, infra/ or .env files.

The situation today

You need outside help on one part of the product, but GitHub only gives repository-wide access. So you either split the repo (and break builds and history), copy code into a sandbox repo (and merge by hand), or give them everything and hope the contract holds.

With coding agents, "everything" now means a working copy of your product in an afternoon. The contract still matters, but it shouldn't be the only control.

A typical contractor setup

PathAccessWhy
src/checkout/Can editThe module they're building
src/ (everything else)Can readSo they can follow conventions
core/recommender/Types onlyImports compile, logic stays home
core/fraud-model/No accessNot needed for the job
infra/, .env*No accessNever needed by a contractor
.github/workflows/Can readRead-only by default for everyone fenced

How Gitfence handles it

Folder-level access

Choose No access, Types only, Can read or Can edit per folder or file, for the contractors group or one person.

NDA before the first clone

Invitation links can require your NDA or security policy. Until it's signed, git, MCP and CI all refuse. Each signature records the exact document hash, typed name, time and IP.

Their code still compiles

Types only replaces a Go, Python or TypeScript module with its API and no implementation, so imports resolve, the build works and the editor autocompletes.

Tests on the real code

Fenced CI runs your suite on the full repository in a sandbox with no network, and returns the verdict: passed or failed, counts and failing test names. Runs self-hosted; on hosted, we set it up with you.

Normal pull requests

Their pushes become GitHub PRs your team reviews as usual, with reviews and checks relayed back to them, hidden content redacted.

Per-person exceptions

One senior contractor needs to read core/types.ts? Give it to that person only. The rest of the group is unchanged.

Temporary access

Grant a path for 2 hours, a day, a week or until a date. It ends on time, with no reminder to set.

Offboarding with an exposure report

When the engagement ends, see every path they could ever read or edit, and when. Export it as CSV or a printable page.

Exposure report titled What has alice been able to see?, listing access periods for the Contractors group and a timeline bar per file showing edit, read and types-only accessExposure report titled What has alice been able to see?, listing access periods for the Contractors group and a timeline bar per file showing edit, read and types-only access
Offboarding, with receipts. Every file a contractor could read or edit, and when. Download JSON or CSV, or print it.

What it won't do

  • Fencing works from now on. If a contractor already cloned the whole repo, that copy exists; rotate secrets and fence before the next engagement.
  • Types only works for Go, Python and TypeScript. For other languages, use No access or Can read.
  • GitHub only today.

Full security model and limits

Questions

Does the contractor need a GitHub account in our organization?

No. They sign in to Gitfence with their own GitHub account and get a Gitfence clone URL. They never get credentials to your GitHub repository or its fork.

How are agencies with several people handled?

Create a group for the agency, set its access once, and send one invitation link restricted to their email domain. Each person signs the documents individually and counts as one restricted person.

Can access end automatically when the contract does?

Yes. Invitations can set an access end date, after which git, MCP and CI stop working for that person, and individual grants can end after a set time or when a Linear or Jira ticket closes. Requests can be approved for a set time, from the web or with one tap in Slack.

Fence your first repository in minutes

Free for one repository and your own team. Add a restricted person and Pro is free for 14 days, no card.