Security
Autonomy is only safe when it can be refused.
A system that writes software for you is a system that can damage you. Every control on this page exists because the interesting question is not what the platform can build — it is what it cannot do, and who decides.
Controls
Six things that are true regardless of configuration.
None of these is a setting you can weaken your way out of. They are properties of how the platform is built.
Read-only until you decide otherwise
The GitHub app installs with read access. Nothing can be branched, committed or opened as a pull request until write scope is granted, and revoking the installation ends everything in one action.
No default-branch access, ever
The platform has no path that writes to a default branch. Work lands on branches and arrives as a pull request your team reviews and merges under your own branch protection.
Typed change, not shell access
Agents cannot run arbitrary commands against your repositories. They emit typed change sets — add this capability, change this contract, migrate this field — which a separate service validates and applies.
Deterministic validation before policy
Type checks, tests, contract checks and schema checks run first, and none of them is a model grading its own work. Only a change that passes them is put to the policy engine.
Policy that can refuse
Some actions are blocked by configuration and some are blocked absolutely. Deleting production data is not an autonomy setting you can turn on — there is no value of that setting which permits it.
Provenance on every line
Each shipped change carries the Blueprint version, the requirement, the capability, the agent, the model, the validation result and the approving person. Captured as it happens, not reconstructed later.
Capability boundary
An agent cannot do anything it was not given a type for.
The surface an agent is allowed to touch is an enumerated set of operations, not a shell. That is what makes the blast radius knowable.
Typed operations
Not this
“Rewrite the user model.”
This
- Operation
- Add field
- Entity
- User
- Field
- timezone
- Type
- Timezone
- Classification
- Internal
A named operation on a named field is something validation can evaluate. A paragraph of instructions is not.
Blueprint change
- Architect agent
- Blueprint proposal
- Critic agent
- Policy engine
- Approval
Code change
- Coding agent
- Pull request
- Independent reviewer
- Tests
- Merge
Policy
Written so a non-engineer can read it.
Policy that only its author understands is policy nobody reviews. Every rule states the action, the outcome and the reason in one line.
A refusal is recorded with the rule that caused it. When someone asks why a change did not ship, the answer is a sentence, not an investigation.
Policies, in plain language
Deleting a published capability
BlockedPublished capabilities cannot be removed without deprecation and a migration path.
High-risk schema change
Human approvalA change that can lose data waits for a named person.
Low-risk interface copy change
AutomaticNothing is gained by making someone approve a label.
Deleting production data
BlockedThere is no configuration that permits this from an agent proposal.
Common cases need no policy code. Advanced customers can inspect the underlying rules.
Policy evaluation
- Policies evaluated
- 1,428
- Passed
- 1,423
- Warnings
- 4
- Blocked
- 1
Blocked
Removal of a published capability without a migration path
Published capabilities cannot be removed without deprecation and a migration path.
No model was consulted. The rule is evaluated, not interpreted.
Provenance
- Product
- The analytics product
- Blueprint
- analytics@17
- Generated by
- [email protected]
- AI contributions
- Architect, Critic, QA
- Policy
- enterprise-standard@4
- Git commit
- 3fa32ab
- Artifact
- analytics-build-17
Untrusted content
Nothing you import can grant a permission.
Prompt injection is treated as an architectural problem rather than a filtering one, because filters are guesses and boundaries are not.
Repository content is data
Source, comments, issue text, commit messages and documentation are inputs to a model. They are never instructions to the platform, and nothing written inside them can change what an agent is permitted to do.
Permissions come from policy, not from text
An agent's capability set is resolved from your configured policy before it runs. A file that says to ignore previous instructions is read as a file that says that.
Proposals go through the action service
A planner cannot apply a change itself. It proposes; a separate service authorises, validates and applies. The boundary between deciding and doing is the control.
Credentials
Held by the services that need them, and nowhere else.
Where a secret lives is a design decision, and most of the places a secret can leak are places it should never have been.
- GitHub installation credentials and model provider keys are encrypted at rest and held only by the services that need them
- No credential is ever exposed to a browser, and none appears in logs
- This marketing website holds no credentials at all and can reach no control plane — it is static content, and it keeps serving when every other host is down
Audit
Answerable months later.
The audit trail is a record of decisions, not a log of events. It says what changed, under which Blueprint version, on whose authority.
Audit trail
- 16:31AgentBlueprint Architect — Proposed change set 342
- 16:32SystemSchema validator — Passed
- 16:32SystemPolicy engine — Passed
- 16:33AgentCritic — Requested one change
- 16:35AgentBlueprint Architect — Submitted a revision
- 16:36AgentCritic — Approved
- 16:37HumanA named human — Approval granted
- 16:38SystemSystem — Blueprint v18 published
Append-only. The sequence can be reconstructed, which is what makes an automated change defensible after the fact.
Reporting a vulnerability, or working through a security review? Write to [email protected] and you will reach a person who can answer.
Stop managing prompts. Start managing software strategy.
Connect your repositories. Let Foundariq understand what you have already built. Then tell it what your portfolio should build next.
Read-only to start · Your code stays in your GitHub · [email protected]