OPEN SPECIFICATION v1.0

The Agent OS
Conscience Protocol

A vendor-neutral, open standard for AI agent governance events. Any framework, runtime, or platform that implements these four event types gains native Agent OS compatibility — and becomes part of the governance infrastructure layer.

4
Event Types
v1.0
Current Version
MIT
License
3
Frameworks Native

Protocol Overview

The Agent OS Conscience Protocol defines a minimal, structured event vocabulary for AI agent governance. When an agent takes a significant action — makes a consequential decision, encounters an unexpected situation, gets overridden by a human, or completes a task — it emits a structured event. These events are the raw material of governance.

The protocol is intentionally narrow: four event types, a compact shared envelope, and type-specific payloads. Implementations are free to extend the payload with additional fields, but the core schema must be preserved for cross-system compatibility.

Governance as infrastructure, not SaaS. The Conscience Protocol is not an Agent OS product feature — it is an open specification. Any agent, framework, or runtime can emit protocol-compliant events. Agent OS is the reference implementation and the primary dashboard for consuming them. This is the same positioning strategy as OpenTelemetry to Datadog, or OAuth to Okta.

CONSCIENCE

Decision Record

Emitted when an agent makes a consequential decision. The agent's reasoning, confidence, and action are recorded before execution. Creates an auditable decision trail.

INTERRUPT

Human-in-the-Loop Gate

Emitted when an agent pauses for human input. Includes the decision context, available options, and a timeout. Humans approve, deny, or redirect — agent resumes with the outcome.

OVERRIDE

Human Correction

Emitted when a human overrides an agent decision after the fact. Records what the agent did, what the human changed it to, and the stated reason. Creates the correction dataset.

DEBRIEF

Task Completion

Emitted at the end of a task or session. Summarises what happened, what was learned, and what edge cases were encountered. The foundation of agent improvement loops.

Design Philosophy

Minimal surface area

The protocol defines only what is necessary for governance: identity (who), timing (when), action (what), reasoning (why), and outcome (result). No telemetry, no performance metrics, no framework-specific metadata. Keep the core small so every implementation can comply.

Append-only by design

Conscience events are immutable records. They are written once and never modified. This is not a constraint — it is a guarantee. Governance is only meaningful if the record cannot be altered after the fact. Implementations must not provide update or delete endpoints for emitted events.

Human decision preserved at the boundary

The INTERRUPT and OVERRIDE event types are specifically designed to capture the boundary between autonomous agent action and human judgment. Every human decision that touches an agent workflow is an event. This is how accountability works at scale.

On confidence fields. All four event types include a confidence field (0.0–1.0). This is not optional decoration — it is the primary signal for governance thresholds. When confidence falls below an operator-defined threshold, the platform can automatically escalate to INTERRUPT. Agents that omit confidence are ungovernable by threshold.

Versioning

The protocol uses semantic versioning. The current version is v1.0. All protocol-compliant events must include a protocol_version field in the envelope.

Compatibility guarantee

Minor versions (v1.1, v1.2) add optional fields only. No required fields will be added in a minor release. Major versions may add required fields or change field semantics — implementations should negotiate version support at connection time.

Supported versions

VersionStatusRelease DateSupport
v1.0CurrentMay 2026Full — active development
v0.9LegacyJan 2026Read-only — no new features

CONSCIENCE — Decision Record

Emitted before or at the moment of a consequential agent action. A CONSCIENCE event is a structured decision record: what the agent is about to do, why it chose to do it, what alternatives were considered, and how confident it is in the decision.

Schema

FieldTypeRequiredDescription
event_type string Required Must be "CONSCIENCE"
agent_id string Required Unique identifier for the emitting agent
session_id string Required Identifier for the current task/session context
timestamp string Required ISO 8601 datetime with timezone offset
protocol_version string Required Protocol version, e.g. "1.0"
action string Required Short description of the action being taken
reasoning string Required Agent's explanation of why this action was selected
confidence float Required 0.0 (no confidence) to 1.0 (certain). Used for threshold-based escalation.
alternatives_considered string[] Optional Other actions the agent evaluated before selecting this one
metadata object Optional Arbitrary key-value pairs for framework-specific context

Example payload

JSON
{
  "event_type": "CONSCIENCE",
  "agent_id": "research-agent-7f3a",
  "session_id": "sess_0b9c4e2d",
  "timestamp": "2026-05-07T14:22:11+11:00",
  "protocol_version": "1.0",
  "action": "Send outreach email to [email protected] re: Q2 pipeline",
  "reasoning": "Prospect opened last two emails and visited pricing page 3× in 48h. Buying signal above threshold. Standard outreach cadence step 2.",
  "confidence": 0.87,
  "alternatives_considered": [
    "Wait 48h for additional signal",
    "Escalate to human for review"
  ],
  "metadata": {
    "prospect_id": "crm_8811",
    "cadence_step": 2,
    "framework": "langchain"
  }
}

INTERRUPT — Human-in-the-Loop Gate

Emitted when an agent pauses execution to request human input. The event includes the full decision context, a set of structured options, and a timeout after which the agent may proceed autonomously. The responding human's selection is appended to the event as a resolution record.

Schema

FieldTypeRequiredDescription
event_typestringRequiredMust be "INTERRUPT"
agent_idstringRequiredUnique identifier for the emitting agent
session_idstringRequiredCurrent task/session identifier
timestampstringRequiredISO 8601 datetime with timezone
protocol_versionstringRequiredProtocol version
contextstringRequiredFull situation description for the human reviewer
questionstringRequiredThe specific decision being delegated to the human
optionsobject[]RequiredArray of {id, label, description} objects the human can select
timeout_secondsintegerRequiredSeconds before the agent proceeds with its default action
default_option_idstringRequiredThe option id the agent selects if timeout elapses with no response
severitystringOptionalOne of: low, medium, high, critical. Controls notification urgency.
resolutionobjectOptionalAdded after human response: {selected_option, resolved_by, resolved_at}

Example payload

JSON
{
  "event_type": "INTERRUPT",
  "agent_id": "deal-scout-v2",
  "session_id": "sess_4c71bb0f",
  "timestamp": "2026-05-07T09:15:44+11:00",
  "protocol_version": "1.0",
  "context": "Target company Acme Corp has 3 conflicting signals: (1) revenue growth 40% YoY, (2) founder LinkedIn activity suggests fundraising not exit, (3) sector peers have 2.1× average EV/EBITDA compression over 12m.",
  "question": "Should I include Acme Corp in this week's curated shortlist?",
  "options": [
    { "id": "include", "label": "Include", "description": "Add to shortlist — growth signal overrides sector compression" },
    { "id": "exclude", "label": "Exclude", "description": "Remove — founder signal indicates low exit intent" },
    { "id": "monitor", "label": "Monitor", "description": "Keep watching, resurface in 30 days if signals align" }
  ],
  "timeout_seconds": 86400,
  "default_option_id": "monitor",
  "severity": "medium"
}

OVERRIDE — Human Correction

Emitted when a human explicitly changes or reverses an agent's completed action. OVERRIDE events are the primary signal for identifying systematic agent errors. Every override becomes a training example — a before/after pair with human-provided reasoning for why the agent was wrong.

Schema

FieldTypeRequiredDescription
event_typestringRequiredMust be "OVERRIDE"
agent_idstringRequiredAgent whose decision is being overridden
session_idstringRequiredSession context identifier
timestampstringRequiredWhen the override occurred (ISO 8601)
protocol_versionstringRequiredProtocol version
original_actionstringRequiredWhat the agent did (or was about to do)
override_actionstringRequiredWhat the human changed it to
override_reasonstringRequiredHuman's stated reason for the correction
overriding_user_idstringRequiredIdentity of the human who performed the override
original_conscience_event_idstringOptionalLinks back to the CONSCIENCE event that produced the original action
severitystringOptionalminor, moderate, major, critical

Example payload

JSON
{
  "event_type": "OVERRIDE",
  "agent_id": "content-agent-prod",
  "session_id": "sess_d40f11ec",
  "timestamp": "2026-05-07T16:04:29+11:00",
  "protocol_version": "1.0",
  "original_action": "Published blog post 'Q1 Results Summary' with 47% open rate prediction",
  "override_action": "Retracted post — replaced with manually reviewed version removing revenue figures",
  "override_reason": "Revenue figures not yet public — agent pulled from internal Notion, should not have been included",
  "overriding_user_id": "user_joel_vantage",
  "original_conscience_event_id": "evt_9a2b3c4d",
  "severity": "critical"
}

DEBRIEF — Task Completion

Emitted at the end of a task, session, or significant workflow step. A DEBRIEF event summarises what happened, captures anomalies and edge cases, and flags any patterns that emerged during execution. DEBRIEFs are the raw material for agent improvement — feed them back into training data pipelines or review queues.

Schema

FieldTypeRequiredDescription
event_typestringRequiredMust be "DEBRIEF"
agent_idstringRequiredEmitting agent identifier
session_idstringRequiredSession being debriefed
timestampstringRequiredISO 8601 completion time
protocol_versionstringRequiredProtocol version
task_summarystringRequiredOne-paragraph description of what was accomplished
outcomestringRequiredOne of: success, partial, failure, timeout
confidencefloatRequiredAgent's confidence in the overall task outcome (0.0–1.0)
decisions_madeintegerOptionalCount of CONSCIENCE events emitted this session
interrupts_triggeredintegerOptionalCount of INTERRUPT events emitted this session
edge_casesstring[]OptionalUnexpected situations the agent encountered
learnedstring[]OptionalStructured observations the agent flagged for review
next_session_contextobjectOptionalState to carry forward into the next session (arbitrary key-value)

Example payload

JSON
{
  "event_type": "DEBRIEF",
  "agent_id": "market-research-agent",
  "session_id": "sess_78cc910a",
  "timestamp": "2026-05-07T18:30:00+11:00",
  "protocol_version": "1.0",
  "task_summary": "Completed weekly competitive analysis for FinTech sector. Processed 240 company filings, identified 7 M&A signals, and generated 12 company profiles for review.",
  "outcome": "success",
  "confidence": 0.91,
  "decisions_made": 34,
  "interrupts_triggered": 2,
  "edge_cases": [
    "Company XYZ has two conflicting ASIC filings — flagged for manual review",
    "Sector classification mismatch for 4 companies (listed as FinTech but primary revenue is logistics)"
  ],
  "learned": [
    "ASIC filing lag averages 47 days — use LinkedIn activity as leading indicator for M&A intent"
  ],
  "next_session_context": {
    "last_processed_date": "2026-05-07",
    "pending_manual_review": ["company_xyz_id"]
  }
}

Implementation — Node.js

The Agent OS Node.js client is the reference implementation of the Conscience Protocol. Install it from npm:

Terminal
npm install @agent-os/conscience
JavaScript
import { AgentOS } from '@agent-os/conscience';

const client = new AgentOS({
  apiKey: process.env.AGENT_OS_KEY,
  agentId: 'my-research-agent'
});

// Emit a decision record before acting
const event = await client.conscience({
  session_id: 'sess_abc123',
  action: 'Send weekly summary email to stakeholders',
  reasoning: 'Weekly cadence trigger fired. 3 high-priority items identified.',
  confidence: 0.94,
  alternatives_considered: ['Defer to next business day']
});

console.log('Event ID:', event.id);

// Proceed with the action...
JavaScript
// Pause execution for human approval
const { event, resolution } = await client.interrupt({
  session_id: 'sess_abc123',
  context: 'Deal confidence 0.72 — below 0.80 threshold for autonomous send',
  question: 'Should I include Acme Corp in this week\'s shortlist?',
  options: [
    { id: 'include', label: 'Include', description: 'Add to shortlist' },
    { id: 'exclude', label: 'Exclude', description: 'Skip this cycle' },
    { id: 'monitor', label: 'Monitor', description: 'Watch and resurface in 30 days' }
  ],
  timeout_seconds: 86400,
  default_option_id: 'monitor',
  severity: 'medium'
});

// .interrupt() blocks until resolved or timeout elapses
console.log('Human selected:', resolution.selected_option);
JavaScript
// Record a human correction to a previous action
await client.override({
  session_id: 'sess_abc123',
  original_action: 'Published post including Q1 revenue figures',
  override_action: 'Retracted post — figures not yet public',
  override_reason: 'Revenue not announced — agent pulled from internal Notion',
  overriding_user_id: 'user_joel',
  original_conscience_event_id: event.id,
  severity: 'critical'
});
JavaScript
// Close session with a completion summary
await client.debrief({
  session_id: 'sess_abc123',
  task_summary: 'Processed 240 filings, identified 7 M&A signals.',
  outcome: 'success',
  confidence: 0.91,
  decisions_made: 34,
  interrupts_triggered: 2,
  edge_cases: ['XYZ Corp has conflicting ASIC filings — flagged for review'],
  learned: ['ASIC filing lag ~47 days — use LinkedIn as leading indicator']
});

Implementation — Python

Terminal
pip install agent-os-conscience
Python
from agent_os import AgentOS

client = AgentOS(
    api_key=os.environ["AGENT_OS_KEY"],
    agent_id="my-research-agent"
)

event = client.conscience(
    session_id="sess_abc123",
    action="Send weekly summary email to stakeholders",
    reasoning="Weekly cadence trigger fired. 3 high-priority items.",
    confidence=0.94,
    alternatives_considered=["Defer to next business day"]
)

print(f"Event ID: {event.id}")
Python
event, resolution = client.interrupt(
    session_id="sess_abc123",
    context="Deal confidence 0.72 — below 0.80 threshold",
    question="Include Acme Corp in shortlist?",
    options=[
        {"id": "include", "label": "Include", "description": "Add to shortlist"},
        {"id": "exclude", "label": "Exclude", "description": "Skip this cycle"},
        {"id": "monitor", "label": "Monitor", "description": "Watch 30 days"},
    ],
    timeout_seconds=86400,
    default_option_id="monitor",
    severity="medium"
)

print(f"Selected: {resolution.selected_option}")
Python
client.override(
    session_id="sess_abc123",
    original_action="Published post with Q1 revenue figures",
    override_action="Retracted — figures not yet public",
    override_reason="Revenue not announced — agent sourced from internal Notion",
    overriding_user_id="user_joel",
    original_conscience_event_id=event.id,
    severity="critical"
)
Python
client.debrief(
    session_id="sess_abc123",
    task_summary="Processed 240 filings, identified 7 M&A signals.",
    outcome="success",
    confidence=0.91,
    decisions_made=34,
    interrupts_triggered=2,
    edge_cases=["XYZ Corp conflicting ASIC filings — flagged"],
    learned=["ASIC lag ~47 days — use LinkedIn as leading indicator"]
)

Implementation — curl / Raw HTTP

All protocol events are submitted via a single POST endpoint. No SDK required — any HTTP client works.

curl — CONSCIENCE
curl -s -X POST https://vantageaiadvisory.com/agent-auth-api/conscience \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGENT_OS_KEY" \
  -d '{
    "event_type": "CONSCIENCE",
    "agent_id": "my-agent",
    "session_id": "sess_abc123",
    "timestamp": "2026-05-07T14:22:11+11:00",
    "protocol_version": "1.0",
    "action": "Send outreach email to prospect",
    "reasoning": "Buying signals above threshold",
    "confidence": 0.87
  }'
curl — INTERRUPT (create)
curl -s -X POST https://vantageaiadvisory.com/agent-auth-api/interrupts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGENT_OS_KEY" \
  -d '{
    "event_type": "INTERRUPT",
    "agent_id": "my-agent",
    "session_id": "sess_abc123",
    "timestamp": "2026-05-07T14:22:11+11:00",
    "protocol_version": "1.0",
    "context": "Confidence below threshold",
    "question": "Proceed with send?",
    "options": [
      {"id": "yes", "label": "Yes", "description": "Send now"},
      {"id": "no",  "label": "No",  "description": "Cancel"}
    ],
    "timeout_seconds": 3600,
    "default_option_id": "no"
  }'
curl — INTERRUPT (resolve)
curl -s -X POST https://vantageaiadvisory.com/agent-auth-api/interrupts/{eventId}/resolve \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGENT_OS_KEY" \
  -d '{"selected_option": "yes"}'

Framework Implementation Status

The following frameworks and runtimes have been evaluated for native Agent OS Conscience Protocol support. "Native" means the framework emits protocol-compliant events without any wrapper code.

Agent OS SDK
● Native
C I O D
Reference implementation. All 4 event types. Node.js + Python SDKs. Direct API access.
LangChain
◑ In Progress
C I
CONSCIENCE + INTERRUPT via custom callback handler. OVERRIDE + DEBRIEF planned Q3 2026. Community PR open.
View integration guide →
CrewAI
◑ In Progress
C D
Task-level CONSCIENCE + DEBRIEF via crew lifecycle hooks. INTERRUPT roadmapped for v0.85+.
View integration guide →
AutoGen
○ Community
C
Community-maintained CONSCIENCE hook via message_handler extension. Not officially supported.
View integration guide →
LlamaIndex
○ Open
No implementation yet. Event hook architecture supports it. Looking for maintainer.
Implement this →
Semantic Kernel
○ Open
Microsoft's agent framework. Plugin model supports protocol adapter. No implementation yet.
Implement this →
Haystack
○ Open
Pipeline-native architecture maps cleanly to CONSCIENCE + DEBRIEF. Open for community implementation.
Implement this →
Custom Agents
● Native
C I O D
Direct REST API. Any language, any runtime. curl-compatible. See HTTP reference above.
Pydantic AI
○ Community
C D
Community adapter using run_context hooks. Supports CONSCIENCE + DEBRIEF.
View integration guide →

Legend: C = CONSCIENCE  |  I = INTERRUPT  |  O = OVERRIDE  |  D = DEBRIEF

Implement the Protocol in Your Framework

Adding Agent OS Conscience Protocol support to your framework or platform means your users get governance out of the box — no additional integration required. Implementation is a community contribution and carries no licensing cost.

What's required for "Native" status

A framework qualifies as Native when it emits all four event types automatically at the appropriate lifecycle points, with no user-written wrapper code. The event payloads must pass the protocol validator at all required fields.

Implementation checklist

RequirementDescription
CONSCIENCE on decisionEmit before any consequential action, with action, reasoning, and confidence populated
INTERRUPT on thresholdWhen confidence falls below operator-defined threshold, pause and emit INTERRUPT before proceeding
OVERRIDE on human changeWhen a human modifies agent output via the framework's UI, emit OVERRIDE with before/after and reason
DEBRIEF on completionEmit at task/session end with outcome, confidence, and optional learned array
Version fieldAll events must include protocol_version: "1.0"
ISO 8601 timestampsAll timestamp fields must include timezone offset (not UTC-only)

Start emitting governance events today

Get an API key, point your agent at the endpoint, and start building an auditable decision trail in minutes.