№ 01 Access

Who can touch your production.

Four parties can reach a system that's live: your team, our engineers, the deploy pipeline, and the CodeHerder agent. This page is the matrix — 13 capabilities, checked against each of the 4, including the 10 the agent is locked out of by design.

№ 02 The four

The four who hold a key

What each one is, what it is for, and the single thing it may not do.

  • Your team

    The people at your organisation who already hold a key: push access to your own repository, and whatever DNS or registrar login you choose to keep for yourselves.

    May not: It cannot reach anything on our side directly. There is no console, so a secret's value, a shell, or a live database goes through a request, not a click.

  • CustomHosted engineers

    The people who provision, watch, and fix your stack — named accounts, not a shared login.

    May not: It cannot merge or deploy to your repository on its own initiative. Only your own team can, unless you have asked us to hold that step for you.

  • The deploy pipeline

    The automated system that builds, checks, and ships every merge — the same one for every change, agent-authored or not.

    May not: It cannot decide to merge or open a pull request. It only ever acts after a person has decided.

  • The CodeHerder agent

    Turns a plain-language brief into a pull request, under the Agentic iteration — CodeHerder add-on ($25/mo). It reads your live repository and writes on its own branch.

    May not: It cannot merge, deploy on its own, read a secret’s value, or open a shell. A person approves the pull request, and the same pipeline you already run ships it.

№ 03 The artifact

The access matrix

Every capability that touches a running system, checked against every principal above — not asserted in a paragraph, checked in a row.

CapabilityYour teamCustomHosted engineersThe deploy pipelineThe CodeHerder agent
Read the repoYesIt is your repository.YesRead-only, given once at onboarding.YesIt reads the repository to build and deploy it.YesIt reads the live repository to brief and open a pull request.
Open a pull requestYesAny of your own contributors can.YesThe same as any other contributor, reviewed the same way.NoIt ships a merge. It does not propose one.YesOnly ever on its own branch, never on the branch that ships.
Merge to the main branchYesThis is your call to make.On requestOnly if you have asked us to review and merge for you. Most teams keep this step themselves.NoIt deploys after a merge. It does not decide to merge.NoNever. A person approves the pull request first.
Start a deployYesA merge starts it — there is no separate deploy step to run.YesTo redeploy or fix something on your account, on request.YesThis is its job.NoIt cannot start a deploy on its own.
Roll backYesRevert the merge and the pipeline redeploys the last working version.YesCan revert or promote the previous deploy for you, on request.YesIt redeploys whatever the last merge or promotion says to run.On approvalIt can open the pull request that reverts a change. A person still has to approve it.
Read a secret's valueOn requestThere is no console to read it from — ask, and we tell you.YesNamed accounts only, to service or rotate a value.YesIt reads a value to inject it into the running app, never to log it.NoIt sees that your code reads a variable, never the value stored in it.
Set a secret's valueOn requestSent through the quote channel and stored for you, the same as onboarding.YesStores the value you send and rotates it on request.NoIt reads a stored value. It does not create one.NoIt cannot write a secret, only reference one by name in code.
Open a shell on the instanceOn requestAvailable if you want it — key-based, and scoped to what you need.YesHolds the keys to the machine room, not to your application.NoIt runs the deploy script. It never gets an interactive shell.NoNever. It changes code through a pull request, not a live session.
Read the databaseOn requestAsk for a one-off export or a read connection, not a shared login.YesNamed accounts, to operate, back up, and monitor it.NoThe app it deploys talks to the database. The pipeline has no login of its own.NoReads the code that queries the database, never a live connection or a row of your data.
Read a logOn requestThere is no console to read it from — ask for an extract covering a window.YesNamed accounts only, to diagnose an incident or a reported bug.NoIt ships a build. It does not read back what a running app writes down.NoIt reads your application code, never a log store or a live system.
Change DNS recordsOn requestOnce a domain is pointed here, records are managed for you.YesManaged end to end — see Domains for the record sheet in full.NoIt deploys your app. DNS is a separate system it does not touch.NoDNS is not part of the application repository it branches on.
Restore a backupOn requestSay what is gone; we pick the restore path and confirm before anything live changes.YesRuns the restore, into a throwaway copy first.NoA restore is a deliberate, confirmed procedure, not an automatic deploy.NoIt changes code, never a backup or a live copy of your data.
Close the accountYesEither side can end the service any time, effective at the close of the billing cycle.On requestCloses it once you say so, and only then.NoIt ships changes to a running account. It has no say in whether the account keeps running.NoIt only ever opens a pull request.
№ 04 Secrets

Secrets

Where a value lives, who can read it back, and what an agent never sees.

  • A secret lives in one place

    Sent once, at onboarding or whenever it changes, and kept in an encrypted store — never copied into a spreadsheet, a chat message, or a second system to keep in sync.

  • It is never in the code

    The running app reads it at startup. It is never written into a file in your repository, so an agent reading the codebase sees the name of the variable your code uses, never the value stored in it.

  • You can change it any time

    There is no console to click into — send the new value through the quote channel, and it is stored and rotated in.

  • It is redacted from logs

    A build or deploy log shows that a variable was set, never what it was set to — for a person reading the log, or an agent reading the build output.

See Logs for what a log actually holds, and for how long.

№ 05 In practice

Least privilege, in practice

Named accounts, scoped keys, and what changes when a job does.

  • Named accounts, not a shared login

    Every engineer who can reach your stack signs in as themselves — never a shared password the whole team knows.

  • A key is scoped to the one job it does

    Deploying your app, reading your backups, running your database — each is its own scoped key, never one master key that opens everything.

  • SSH is off by default

    A shell on a dedicated instance is available on request, key-based only, scoped to what is needed — never left open because nobody asked for it.

  • Access changes when a job does

    It is not left standing after it stops being needed — see joiners and leavers below for exactly when it is removed.

№ 06 The tie-in

What the CodeHerder agent can and cannot do

The honest answer to the question every "Agentic iteration — CodeHerder" line raises.

The agent's credential works on one thing: its own branch. It reads your live repository, writes a change, and opens a pull request. It cannot merge that request, cannot start a deploy on its own, cannot read a secret's value, and cannot open a shell on the instance running your app.

A person approves the pull request. The same pipeline that ships every other change on your account ships that one too — there is no separate, faster path for an agent-authored change to skip review.

Read a brief in full on Brief a change, the line-item hand-off on Spec sheet, or what the add-on costs on Billing.

№ 07 Changing hands

Joiners and leavers

On your side, and ours — the same discipline, both directions.

  1. 1

    A person joins your team

    Add them to your own repository and DNS panel the same way you would add any other teammate. We are not part of that step, and do not need to be told.

  2. 2

    A person leaves your team, or a contractor's engagement ends

    Remove their repo access on your own schedule. If they also held a key to something on our side — a shell login, for instance — tell us through the quote channel and it is revoked the same day.

  3. 3

    One of our engineers changes role

    Their access changes with it. A key scoped to your account is removed the day it stops being their job.

  4. 4

    One of our engineers leaves

    Every key and account they held is revoked before their last day, not sometime after it.

№ 08 The exception

Emergency access

When elevated access gets used, it's recorded, and you're told.

  1. 1

    Elevated access is the exception

    Day-to-day work runs on the named, scoped access described above — not a standing key to everything.

  2. 2

    Used only to stop or fix a live incident

    Opened when routine access cannot resolve a real problem fast enough, not as a shortcut around the normal path.

  3. 3

    Every use is recorded

    What was opened, by whom, and why, goes in the incident record — not a quiet, unlogged detour.

  4. 4

    You are told

    Elevated access used on your stack is named in the incident note you already get — see Monitoring for the shape of that note.

№ 09 Answers

Access questions

The anxiety questions, verbatim, answered from the matrix above.

  1. 01Do you support single sign-on for my team?

    There's nothing here for it to connect to. Your team has no login console at all — access to your stack runs through your own repository and DNS, so add or remove a person there, not in a dashboard.

  2. 02Who can actually deploy to production?

    Your own team, by merging to your repository — the same pipeline that already ships every other change. We can deploy or roll back on your behalf, on request. The CodeHerder agent never can, on its own.

  3. 03Can the CodeHerder agent read our secrets or our database?

    No, on both counts. It reads your application code to brief and open a pull request. It never sees a secret's value, and it never opens a connection to your database.

  4. 04How do I revoke access when someone leaves?

    For your own team, remove their repository and DNS access yourself, whenever you choose. For anything they held on our side, tell us through the quote channel and it is revoked the same day — see Joiners and leavers above.

  5. 05Is this audited or certified by a third party?

    No. This page describes real, current operating practice, in writing — it is not a substitute for a formal audit or certification if your situation specifically requires one.

  6. 06What's the difference between an on-request and a break-glass action?

    An on-request action is routine — reading a secret's value, restoring a backup — worked through the quote channel on your schedule. Break-glass is the exception: elevated access opened only to stop a live incident, always recorded, and always told to you afterward.

Want the access record for your own account?

Ask through the quote form — the same channel behind every 'on request' row above.

Get a quote