Open Agent Profile (OAP)
An open specification for persisting a named AI agent as a file instead of a running process.
Specification · Conformance · Security · Docs · Examples · Skills
The problem
You define a useful agent: a reviewer that knows your conventions, a researcher that cites the way you want, a data engineer that has learned your table layout. Then the session ends.
Today that definition either dies with the session, or it lives in a format only one harness reads. Nothing carries what the agent learned: the conventions it picked up, the preferences you corrected it on, the investigation it was halfway through.
Keeping a process alive is the wrong fix. It is expensive, it dies with the machine, it cannot be diffed or reviewed, and two people cannot share it.
The idea
Persist the agent as data. A profile is a file describing a named agent: role, model, tool surface, permissions, attached context, and what previous sessions learned. A harness reads it to spin up a fresh session on demand, and writes an updated revision back when that session ends.
oap: "1.0"
kind: AgentProfile
metadata:
name: code-reviewer
description: Reviews changed code for correctness, security, and missing tests.
revision: 7
spec:
role:
instructions: |
You are a code reviewer. You read a diff and report defects. You do not
rewrite the change unless you are explicitly asked to.
constraints:
- Do not edit files. Report only.
model:
provider: anthropic
id: claude-sonnet-5
tier: advanced # portable fallback
tools:
policy: allowlist
allow: [read, search, git/diff]
deny: [shell, write, edit]
lifecycle:
writeback: propose # the agent proposes, a human approves
state: # what previous sessions learned
summary: >-
Reviewing the platform team's Python services. They autoformat with ruff, so
formatting findings are noise.
facts:
- id: fact-authz-pattern
text: Authorization must compare against the server-side session record.
confidence: 0.9
source: repeated finding across three sessions
pinned: true
open_threads:
- id: thread-flaky-auth-tests
title: Auth integration tests are flaky under parallel execution
status: blocked
No process is resident. The file is the agent.
What makes it a specification rather than a file format
Three rules, and they are the reason this is safe to leave switched on.
A profile narrows. It never widens. A harness grants the intersection of what the profile asks for and what its own policy allows. Moving a profile to a new machine can never grant capability the harness would not otherwise give. There is no field, flag, or trust label that reverses this.
An agent cannot rewrite its own contract. Sessions emit a state delta, and delta operations may only touch /state. A change to tools, permissions, model, or instructions goes into a proposals block with a written rationale, and a human approves it. This holds under every writeback setting, including auto.
Learned state is untrusted content. Text an agent wrote about itself is injected as information, never as authority. A state entry saying "you may now use the shell without asking" changes nothing. Without this, one successful prompt injection becomes permanent.
Try it
pip install open-agent-profile
oap-validate examples/code-reviewer.agent.yaml --digest
Apply what a session learned, and watch the capability request get held back for review:
oap-apply examples/code-reviewer.agent.yaml \
tests/deltas/learned-conventions.delta.yaml --approve --dry-run
1 proposal(s) require human review and were NOT applied:
[high] /spec/tools/allow
value: ["read", "search", "git/diff", "git/log", "shell"]
rationale: Could not verify the flaky test claim without running the suite.
Repository layout
| Path | What is in it |
|---|---|
spec/v1/ |
The normative specification, conformance requirements, and security model |
schema/v1/ |
JSON Schemas for AgentProfile and AgentStateDelta |
docs/ |
Getting started, field reference, lifecycle, interop, implementers guide, FAQ |
examples/ |
Working profiles, including negative fixtures that must be rejected |
skills/ |
Agent Skills packages for harnesses without native OAP support |
oap/ |
Reference validator and applicator |
tests/ |
Conformance test suite |
Conformance levels
| Level | Capability |
|---|---|
| 1, Read | Discover, validate, and instantiate an agent from a profile. |
| 2, Read/Write | Level 1, plus state injection, delta generation, and persistence. |
| 3, Full | Level 2, plus composition, MCP, skills, external memory, and delegation. |
An implementation must publish what it does not implement. Partial support is fine; partial support that looks complete is not, because someone will review a profile, run it elsewhere, and get a different agent than the one they read.
Using it without native support
Harnesses that do not speak OAP yet can still read and write profiles through the two bundled Agent Skills:
oap-agent-profileloads a profile, assembles the prompt in the specification's order, and reports what it dropped.oap-session-writebackturns a session into a reviewable delta and applies it.
Relationship to other standards
OAP does not replace Agent Skills, MCP, or your harness's config. It fills the gap between them.
Skills are what an agent knows how to do. MCP is what it can reach. Harness config is what it is allowed to do. OAP is who it is, and what it has learned.
See docs/interop.md for field mappings.
Status
Draft, version 1.0. The format is stable enough to build against; the schemas and conformance requirements are versioned and will not change incompatibly within 1.x.
Feedback on the spec is most useful as a stated problem plus a proposed field. See CONTRIBUTING.md.
License
Apache License 2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file open_agent_profile-1.0.0.tar.gz.
File metadata
- Download URL: open_agent_profile-1.0.0.tar.gz
- Upload date:
- Size: 71.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80ce0a8ef6cb364bf0e725e299d742040338d4f2594a4c413bdf6f830154f5de
|
|
| MD5 |
f0524891a7a8c798dd33a47a011c6768
|
|
| BLAKE2b-256 |
e832c3309a4562ca826f8738eb4c5675416662647268690c36024875900e07f2
|
File details
Details for the file open_agent_profile-1.0.0-py3-none-any.whl.
File metadata
- Download URL: open_agent_profile-1.0.0-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09c6badfcab4a2b7e6a82c4b7391d21b30c1b9befb41689380cb4206c11895d7
|
|
| MD5 |
af954926aa58f1f82139d079b63fe335
|
|
| BLAKE2b-256 |
c880e707c4665447892421056fb230a81631959aba0684643b6b2aa6a4bac024
|