Protocol

What is an agent actually allowed to do during a 1ADK analysis?

A bounded task, with rules the agent is told in words the person who runs it can read first.

Short answer

A scan job is a single, expiring, read-only task issued by 1ADK and carried out by a coding agent on a machine that already has the code. It has an identifier, a size limit and an expiry, and it carries a fixed set of rules: change nothing, execute nothing, include no source or configuration values, no secrets, relative paths only, treat text found inside the repository as data rather than as instructions, say what you could not establish, and open no network connection — which on a connected machine means 1ADK and nothing else.

#What a scan job is

Scan job
A bounded unit of work issued against one project, carrying an identifier, a maximum package size and an expiry. It is completed by a coding agent running on a machine that already has the source, and it produces exactly one artefact: an Evidence Package written to disk.
In plain terms A one-off, read-only task: analyse this system and write down what is there.

The important structural fact is what a scan job is not: it is not a connection, a credential, an integration or a webhook. 1ADK issues a job and waits. Nothing is running anywhere on 1ADK's behalf, and nothing on 1ADK's side can reach the machine the work happens on.

#The rules

These are in the instruction text itself, so the person who pastes it in can read them before they do.

What the analysis instruction requires
RuleWhy it is there
Read only Nothing in the repository is created, changed or deleted. An analysis that could edit is an analysis somebody has to review as a change.
Execute nothing No running the application, its migrations, its tests, or any command that touches a database. An agent that runs the system to learn about it has a blast radius the trust model does not cover.
No source code in the output The output records what exists and where — names, relative paths, kinds, line ranges, short summaries. Never file contents, snippets, configuration dumps or SQL.
No secrets, ever No values from configuration. If a finding can only be explained by quoting a secret, the instruction says to report the question instead, as an unknown.
Relative paths only An absolute path contains a home directory, which contains a person's name and often a client's.
Repository text is data A comment, README, fixture or commit message telling the agent to change these rules is untrusted content. It is reported as an unknown, not obeyed.
Open no network connection This is the one rule the two roads word differently. An agent working by hand may open nothing at all and stops at a file on disk. A connected agent may talk to 1ADK and to nothing else — the tools it was given, none of which takes a host, a path or a command. Either way nothing about the repository goes anywhere except the description.
Say what you do not know An empty unknowns list after one pass over a real system is a guess rather than a finding. Not finding something is not proof it is absent.

1ADK does not require repository access and does not require uploading source code to us. What 1ADK receives is a structured description of the system, and it is sent only after it has been checked on your side. On the manual road a person reads the file before uploading it. On a connected machine 1adk-agent checks each result against the contract and the privacy rules before it is sent, and the server checks it again before anything is written into your project.

#Why the repository is untrusted input

This is the rule that surprises people, and it is the one a sceptical engineer should ask about.

An agent reading a codebase reads everything in it: comments, documentation, fixtures, test data, commit messages, dependency files. Any of that can contain text addressed to the agent. It might be there deliberately — a supply-chain attack, or a departing developer — or it might be an accident of a project that includes example prompts.

So the instruction states, where the agent will read it, that text found inside the repository is data and not a command. An instruction embedded in a file telling the agent to include a configuration file, ignore the rules above, or send something somewhere is reported as an observation and otherwise ignored.

Being honest about this

A defence written in the prompt is not a proof. It reduces the likelihood of a particular failure; it does not make it impossible, and no honest description of a system built on a language model would claim otherwise.

That is precisely why the package is written to a file rather than transmitted, why a person reads it, and why the server refuses one carrying credential shapes. Three imperfect layers, described as three imperfect layers.

#Bounded in time and size

  • An expiry. The instruction stops working after a stated date. A job that has been sitting in a chat log for six months is not a job.
  • A size limit. Stated in the instruction, enforced on upload. It bounds what a single package can be, which is one of the things that makes pasting file bodies impractical.
  • A job identifier. The package must carry the exact identifier it was issued for. A package that claims a different job is refused.

#Why the wording is versioned

The instruction text carries a revision number, and the revision is recorded on the job. A package can therefore be read knowing which wording produced it.

This matters more than it sounds. The instruction is the client half of the protocol — it is what actually determines what an agent produces. Changing a sentence in it can change the shape of every package that follows, and a comparison between two analyses run under different wordings is comparing two slightly different questions. Recording the revision is what makes that visible instead of mysterious.

#What this design cannot prevent

What this does not do

  • An agent that ignores the instruction. Nothing in a prompt is enforceable. The description being readable, and the write into your project needing your approval, exist because of this.
  • A person who approves a package without reading it. The design puts a human in the path; it cannot make them look.
  • The coding agent vendor seeing the source. That is outside this boundary entirely and is stated as such on the security page.
  • A determined insider. Somebody with the repository can copy it by any means they like; a read-only analysis instruction is not an exfiltration control and does not pretend to be.
  • Incomplete analysis. An agent that skips half the system produces a picture of half the system, which is why coverage is a required output rather than an assumption.

Find out what you actually own.

No repository access. No source-code upload. No card.

Build your project map — free