Skip to main content
Every agent in Forge follows a governed lifecycle. Before an agent can dispatch production workloads, it must progress through a structured sequence of phases — each with its own constraints, timelines, and promotion criteria. This is how the Trust Fabric prevents unvetted agents from accumulating risk and ensures that every agent operating in production has been explicitly approved. Lifecycle management answers three questions:
  1. How does an agent enter the system? — POC intake with a 60-day clock.
  2. How does an agent earn production status? — Promotion criteria enforced at transition time.
  3. How does an agent leave? — Automated sunset when the POC expires or when an operator retires an agent.

CovenantLifecycle Phases

Every agent definition carries a lifecyclePhase field that determines what the agent is allowed to do. The four phases form a linear progression:

AGENT LIFECYCLE PHASES

POC

60-day trial period. Agent is active but time-bounded.

Auto-sunsets at expiry

Staging

Pre-production validation. Promotion criteria checked.

Optional intermediate phase

Production

Fully governed. All promotion criteria satisfied.

No expiration clock

Sunset

Deprecated. No dispatch allowed. Registry entry preserved.

Terminal state

PhaseStatusDispatch AllowedExpirationTransition Out
pocActiveYes (time-bounded)60 days from intakePromote, extend, or auto-sunset
stagingActiveYesNonePromote to production or sunset
productionActiveYes (fully governed)NoneSunset only
sunsetDeprecatedNoN/ATerminal — preserved for audit
The lifecyclePhase field is checked by Gate 2 (Agent Status) in the safety gates pipeline. Agents in the sunset phase have their status set to deprecated, which causes the gate to block all dispatch attempts.

Phase Transitions

POC Intake

When a new agent definition is created, it starts without a lifecycle phase. An operator initializes the POC lifecycle explicitly, which sets the 60-day clock:
  • lifecyclePhase is set to poc
  • pocCreatedAt records the intake timestamp
  • pocExpiresAt is set to 60 days from now
  • pocExtensionCount is initialized to 0
The 60-day period gives teams enough time to validate the agent’s behavior, tune its configuration, and decide whether to promote it to production.

Promotion Criteria

Promoting an agent from poc or staging to production requires that four fields are populated on the agent definition. The promotion mutation validates all four and rejects the transition if any are missing:
Required FieldPurpose
riskTierThe agent’s assessed risk level (determines governance scrutiny)
ownerThe owning team responsible for the agent’s behavior
autonomyRungThe agent’s position on the autonomy ladder (assistive, retrieval, supervised, or bounded)
fiduciaryFlagWhether the agent handles financial transactions or commitments
When promotion succeeds, the POC expiration clock (pocExpiresAt) is cleared. The agent is now a fully governed production participant with no time limit.
Promotion is a one-way gate. Once an agent reaches production, it cannot be demoted back to poc or staging. The only forward transition from production is sunset.

POC Extension

If a team needs more time to evaluate a POC agent, they can extend the expiration by 30 days. Extensions are subject to constraints:
  • One free extension is allowed without security review (tracked via pocExtensionCount)
  • A written justification is required and stored on the agent definition (pocExtensionJustification)
  • Additional extensions beyond the first require contacting the security team directly
  • The extension adds 30 days to the current expiration date, not the current time
This means a POC agent can run for a maximum of 90 days (60 + 30) before it must either be promoted or reviewed by the security team.

Sunset Triggers

An agent enters the sunset phase through two paths:
Automatic Sunset

A cron job runs every 6 hours and transitions POC agents whose pocExpiresAt has passed. Sets phase to sunset and status to deprecated. Sends a notification to operators.

Manual Sunset

An operator explicitly sunsets an agent at any phase (POC, staging, or production). The mutation is idempotent — sunsetting an already-sunset agent is a no-op.

In both cases, the agent’s registry entry is preserved for audit trail purposes. Sunset agents are never deleted — they remain queryable in the registry with their full history intact.

Two-Agent Rule

The Two-Agent Rule is a financial safeguard for high-autonomy agents. It applies specifically to Rung 4 (bounded) agents — those that execute within limits without per-action human confirmation.

Financial Threshold

When a Rung 4 agent’s estimated action cost exceeds the financial threshold, the action requires dual approval before proceeding:

TWO-AGENT RULE THRESHOLD

$100

FINANCIAL_THRESHOLD_CENTS = 10,000

Actions with an estimated cost above $100 (10,000 cents) at Rung 4 trigger the Two-Agent Rule. The governance pipeline returns a hold disposition, requiring human approval before the action can proceed.

How It Works

ConditionResult
Agent is not Rung 4 (bounded)Rule does not apply. No additional approval required.
Agent is Rung 4, estimated cost at or below $100Rule does not apply. Agent executes within its normal autonomy limits.
Agent is Rung 4, estimated cost above $100Rule triggers. Governance returns hold. Human approval required.
The threshold is currently a constant (FINANCIAL_THRESHOLD_CENTS = 10_000). A future iteration will make this configurable per-organization via a config table or environment variable. Agent co-signing (where a secondary agent validates the action) is also planned as an alternative to human approval for qualifying scenarios.

Autonomy Rungs Reference

The Two-Agent Rule only applies at Rung 4. Here is the full autonomy ladder for context:
RungNameBehaviorTwo-Agent Rule
1AssistiveHuman reviews before any actionN/A
2RetrievalRead-only from trusted sourcesN/A
3SupervisedAgent proposes, human confirmsN/A
4BoundedAgent executes within limitsApplies above $100
For the full autonomy model, see Agent Trust.

Registry Reconciliation

Registry reconciliation is Forge’s mechanism for detecting shadow agents — agents that exist as definitions but have no corresponding registry entry, or agents whose registry state has drifted from their approved configuration.

Reconciliation Process

Every 6 hours, an automated reconciliation job compares all active agent definitions against the agentRegistry table and classifies each agent:
Current

Registry entry exists and was checked within the last 6 hours. Normal operating state.

Stale

Registry entry exists but has not been reconciled in over 6 hours. Warning notification sent.

Missing

No registry entry found. P0 alert — this agent is unregistered and should not be dispatching.

StatusRegistry EntryLast ReconciledNotification
currentExistsWithin 6 hoursNone
staleExistsOver 6 hours agoWarning
missingDoes not existN/AP0 Error alert
A missing status is the most serious finding — it indicates an agent definition exists without a corresponding registry entry. This is the “shadow IT” scenario: an agent that was somehow created or activated outside the normal registration flow. Missing agents generate a P0 operator notification requiring immediate investigation.

Automated Crons

Lifecycle management relies on four automated cron jobs that run on fixed schedules:
Cron JobSchedulePurpose
Auto-Sunset Expired POCsEvery 6 hoursFinds POC agents past their pocExpiresAt and transitions them to sunset with status deprecated. Sends operator notification.
POC Day-30 ReminderDaily at 08:00 UTCFinds POC agents that have reached day 30 and sends a reminder to the owning team: promote, extend, or let it sunset at day 60.
Registry ReconciliationEvery 6 hoursCompares active agent definitions against agentRegistry. Flags missing and stale entries with operator notifications.
Convex-Native Agent SyncEvery 24 hoursEnsures all known Convex-native agents have corresponding agentRegistry entries. Prevents registry drift for built-in agents.

POC LIFECYCLE TIMELINE

Day 0

POC intake

Day 30

Reminder sent

Day 60

Auto-sunset (or day 90 if extended)

Promoted

Production (no expiry)

The day-30 reminder uses a 24-hour window (agents between 30 and 31 days old) to avoid re-notifying every day. The auto-sunset cron is idempotent — running it multiple times against the same expired agent produces the same result.

Next Steps