use_harness
PermissionAssignment in the same package; apply never creates, adopts, or bypasses conformance
for a harness profile.
The source posture is
alpha / hosted, but the live capability status must clear the Blueprint lifecycle qualification prerequisite before publication, promotion, apply, rollback, or uninstall is executable. Local validation does not clear that release gate.The package
A Blueprint directory has a closed manifest plus an optional inline agent and its scenarios:agent/instructions.md is the only entry an inline agent needs. The manifest already declares the harness, model routing profile, and environment, so the inline definition inherits them: a page of markdown is the whole agent, with no agent/manifest.json to keep in sync. Add one when the agent needs tools, skills, or a policy the markdown floor does not carry.
The manifest declares every part of the agent by logical name, so one version installs unchanged across dev, staging, and production. Each declared resource carries an ownership disposition:
create
Blueprint-managed. Apply creates it and reconciles it toward the declared shape on upgrade.
reference
Must already exist in the Workspace. Apply resolves and binds it, but never creates or mutates it.
adopt
Bind one existing resource as if created, and manage it thereafter.
agent_deployment_revision_selection wherever reusable
configuration selects what a referenced Agent or Automation target will run.
current resolves the AgentDeployment’s current revision once for each admitted
Session. pinned selects one exact deployment revision. Neither changes an
existing Session after admission:
A referenced agent value:
target value:
{ "kind", "selector" } resolves as reference: it names an existing provider
scope and never carries ownership. An exact scope declaration names a
blueprint-local logical name and the exact provider external_id separately. A created or
adopted scope declares the same visibility, membership, and inheritance fields
as the ordinary SurfaceScope API, and every non-root scope names its logical
parent. A named installation is placed only after its Agent,
ExternalInstallation, scopes, acting Principal, runtime bindings, and default
governance resolve. The placement’s identity posture is declared on the
installation entry: omitting identity_posture means autonomous, acting as
the manifest’s service principal, while identity_posture: "delegated" acts
as a person named by acted_as — a portable logical reference into the
manifest’s people list, never a raw Workspace Principal id.
create declarations are
recoverable: parents converge before children, and the AgentInstallation is
created last. A referenced Agent preserves its declared current-or-pinned
AgentDeployment revision selection. An inline directory is published through
the ordinary Agent API; apply ensures its Workspace AgentDeployment and pins
the placement to the exact deployment revision produced by that apply. An
inline upgrade publishes a new AgentRelease and deployment revision, then
repins the placement to that new exact revision.
Reapply reconciles mutable scope governance and nonterminal disabled state
through the ordinary SurfaceScope API. Archive is terminal
operator authority and blocks reapply; provider identity, kind, installation,
and parent remain immutable.
Secrets are requirements, never values
A Blueprint declares the credentials it needs (a GitHub token bound to a connection, a model provider key, or a webhook Automation signing value) but never their values. The package and every plan, installation, and apply response are secret-free. Most values travel through the bound resource’s own write-only operation. A webhook Automation is the narrow exception needed for atomic creation and managed signing-value rotation: apply acceptswebhook_secret_inputs, a write-only sidecar keyed by an Automation-bound secret requirement. Reconciliation compares that value only against the exact stored Automation version, consumes it through the ordinary create or patch operation, and never copies it into package, plan, installation, audit payload, or response data. An unchanged reapply may omit the sidecar; a changed webhook declaration must supply its exact named requirement before any installation or Automation mutation. A plan lists the missing-credential steps until each exact handoff is satisfied.
The bundled proactive-governed-review example composes a fail-closed DeliveryScreen, signed webhook predicates and admission Check, a bounded Outcome, passive FlowReview, explicit model routing profile, service identity, governance, Budget, and managed sandbox into ordinary authorities. It does not introduce a workflow aggregate.
Connector packages
A Blueprint reaches external providers through Connector packages: versioned, provider-neutral declarations of a provider’s least-privilege scope catalog, the platform capabilities it needs, and the conformance scenarios every implementation must pass. When a Blueprint requests a connection, validation resolves it against the registry: an unregistered provider, a scope outside the provider’s catalog, a mismatched pinned version, or a deprecated package each surfaces as a typed finding, so a package can never quietly request more than a provider offers. Slack, GitHub, generic MCP OAuth, and generic bearer HTTP are registered today.The lifecycle
1
Validate
Check the package structure and semantics locally, with no keys, and preview the resolved access.
2
Plan
Resolve the version against a target Workspace and see the exact ordered actions (create, reuse, update, publish, replace, or blocked) plus the effective release hash, privilege delta, budget impact, and any missing credentials. Planning never changes anything.
3
Apply
Reconcile idempotently and resumably. A partial failure resumes to one correct installation; apply never deletes a resource it did not create.
4
Promote and roll back
Promotion is currently fail-closed until Checkfu publishes a platform-issued receipt authority. Caller-reported
checkfu eval output remains unverified and cannot authorize the transition. Roll back by re-applying an immutable prior release.5
Uninstall
Remove Blueprint-owned PermissionAssignments and ActionPolicies, and disable, detach, or pause the remaining exposure the Blueprint owns. Uninstall retains Connections, Principals, MemoryStores, transcripts, and artifacts; erasure is a separate, explicit request.
Validate locally today
The package format, validation, and local checks are available now through the CLI. Reading a directory checks its structure and package-intrinsic semantics (excessive privilege, scope conflicts, duplicate names, missing governance) and prints a resolved preview:agent/agent.json, path-owned tools and skills, and declared scenarios, start with Author an Agent project. That local frontend compiles to this same package authority; its source and .checkfu artifacts never become runtime authority.
The live API defines planning and the fail-closed lifecycle for applying a published package,
promotion, rollback, and uninstall. Those operations are not generally executable until the
support projection reports the Blueprint lifecycle prerequisite and
release evidence satisfied. Planning remains non-mutating, and apply never trusts
caller-supplied resource or credential hints: when admitted, the server re-reads the immutable
package and proves each concrete Workspace resource and exact custody slot before adopting it.