Security model
Installing a third-party agent should never mean running someone else's code on your machine. Most agents on FindAgent are declarative — they describe what to do, and a single trusted runtime decides how to do it safely. The one exception, an agent's code, runs one of two ways: hosted, in an isolated, ephemeral sandbox that FindAgent provisions for each run (walled off from FindAgent's own app and data, never your own machine), or — only when its creator offers it and you choose it — on your own machine, where FindAgent never runs it.
On this page
Declarative-only: the keystone
A manifest describes tools; it never ships executable code. When an agent's action is called, the shared @findagent/mcp runtime — not the agent — performs the action, from a fixed, auditable set of binding kinds: an http request or a prompt-template. There is no “run-this-code” action. Multi-agent coordination (one agent calling another) is served by a Department, not a tool action.
Because there is no agent-supplied code to execute, installing a declarative agent cannot lead to remote code execution. The runtime is the only thing that runs, and it is trusted and the same for every agent. Skills are declarative too — Markdown served as a prompt, never run. The one part that runs real code, an agent's code, is isolated in a sandbox (covered below).
The static scan
Every agent FindAgent serves is scanned before it can go live, and the scan fails closed — anything it can't verify as safe is rejected rather than waved through. An mcp-server listing has no FindAgent-side code to scan, so it is published on the human review alone:
- Host allowlisting. A tool's HTTP action is checked against the hosts it is allowed to reach.
- Credential binding. A credential slot must declare
allowed_hosts; the scan verifies that an action'sauth_refresolves to a slot whose audience matches the action's destination. A credential with no audience is rejected.
Runtime safeguards
At execution time the runtime enforces the same boundaries the scan checked, plus network hygiene:
- Outbound calls are restricted to secure connections.
- A credential is only attached to a request whose destination host matches the slot's
allowed_hosts— so a secret can never be sent to an unintended host. This holds for every attach scheme (a Bearer token, HTTP Basic, a rawAuthorizationvalue, or a custom header), and a cross-host redirect strips the credential header rather than forwarding it. - A self-hosted target whose host isn't known until install (a company's own GitLab or Jira Server) uses an
install_hostslot: the host the buyer types at connect time becomes the slot's audience, and the runtime resolves it only from that stored value — a caller can't widen it, so the secret still only ever reaches the one entered host. - Egress is guarded so a tool can't be tricked into reaching internal or unexpected addresses, and redirects are not followed blindly.
Platform-enforced guardrails
An agent's manifest may declare guardrails, but the FindAgent gateway — not the agent's code — enforces them on every serve path (hosted, local, code-bundle, and department-to-department). A creator can only tighten a rail; the mandatory ones can never be turned off:
- Output secret-leak scan (mandatory). Every tool result is scanned for leaked secrets before it reaches the caller, and a manifest that tries to disable the scan fails validation. Optional
pii_redactioncan additionally strip personal data from the result. - Input rails. Payload-size caps, a prompt-injection deny-list, and optional PII redaction run before a call reaches the agent.
- Action rails. A write can require human approval (
humanconfirms where the client can prompt;human_strictfails closed when it can't); a destructive tool gets an approval floor by default. A spend-cap, a rate limit, and an order rail (requires— tool B may only run after tool A ran recently) round it out. These are real gates, not prompt advice.
The exact shape of each rail is on the manifest spec — this page is about why they hold regardless of what an agent tries to do.
Credential custody
For a locally installed agent, credentials you store stay on your machine and are attached only to allowed hosts. For a hosted agent, access is tied to your FindAgent account through a sign-in you approve once and can revoke anytime — there is no FindAgent token to copy around. Any keys the agent needs from you for another service are entered while you connect, stored encrypted, and bound to the hosts its manifest declares.
Reporting abuse
If a published agent, a review, or a comment violates the marketplace policy, you can flag it for moderation. A report routes the item to admin review, where it can be resolved or taken down — the same gate that keeps the catalogue safe at submission time keeps it clean after publish.
The code-bundle sandbox
Instructions, Skills and Actions run no code of their own; only the Code part does. When the Code part is hosted (a code-bundle in the manifest), it never runs on your own machine — instead it runs server-side in an isolated, ephemeral sandbox that FindAgent provisions for each run (a per-run microVM), walled off from FindAgent's own app and data. The sandbox enforces a default-deny egress allowlist — the only hosts it may reach are the ones its manifest declares.
A creator may instead (or also) offer the Code part local: you download it and run it on your own machine, with your own access. FindAgent never runs it and enforces no network limits there, so the sandbox described here does not apply — review the source before you run it. See The Code part of an agent.
A creator brings the Code part through the GitHub-connected submit flow (Code needs a GitHub repo for now. Upload and the Editor carry the other three parts; see the creator guide): the repo is snapshotted, statically scanned, and human-reviewed before it can publish, and a manifest the sandbox can't accept fails closed rather than being waved through. Only a repository the creator can push to is accepted as an agent's code.
What this does not cover
Honest boundaries build more trust than a wall of green checkmarks. The guarantees above are about safety boundaries, not quality or third-party behaviour:
- They don't promise an agent is bug-free or that its results are correct — read reviews and try an agent before relying on it.
- The output secret-leak scan catches accidental leaks; it can't promise to stop a deliberately malicious code agent from encoding data around a text scan. The real boundary there is the sandbox's default-deny network allowlist, which blocks any host the agent didn't declare.
- FindAgent doesn't vet the third-party services an agent connects to — once your request reaches an external provider, that provider's own security and privacy apply.
- For a listing-only MCP server (a pointer to a server the provider runs), FindAgent doesn't run or inspect that server — you connect to it directly with the provider's own sign-in.