Skip to main content
Version: v5.6.1

opschain admin trust node-ceiling set

packs:agentspacks:agent-governance

opschain admin trust node-ceiling set --where <predicate>... --ceiling <advise|supervised|autonomous> [--id <id>] [--note <text>] [--server <url>] [--auth-token <token>]

Writes one node-classification tier ceiling (POST /api/trust/ceilings/nodes, or PUT /api/trust/ceilings/nodes/{id} with --id). At every node whose effective metadata matches all --where predicates, an agent's effective tier is capped at --ceiling, whatever its grants or type ceiling say:

effective = min(grant tier, type ceiling, every matching node ceiling)

Matching evaluates the compiled effective-metadata snapshot at the frozen target on each request, so classifying a node (e.g. setting core.criticality) moves the clamp on the very next request, and multiple matching rules resolve min-wins. The canonical posture rule:

opschain admin trust node-ceiling set \
--where 'core.criticality=critical' \
--ceiling supervised \
--note 'critical estate stays supervised'

The write is governance-determined, exactly like the per-type ceilings:

  • Step-up floored — on a session-backed admin plane the verb trust.ceiling_write requires a live elevation (ceiling writes are grant-class writes).
  • Pack-gated — the surface requires packs:agent-governance.
  • Audited — every write lands an info:trust:node_ceiling_set event carrying the rule and, on a rewrite, the previous predicates and ceiling.
  • Validated — a predicate naming a metadata field no adopted profile registers refuses by name (it would never match), and an empty predicate list refuses (it would clamp every node).

Flags​

FlagMeaning
--where <predicate>A metadata predicate every covered node must match: <field>=<value>, <field> in <v1>,<v2>, <field> before|after <YYYY-MM-DD>, or <field> is true|false|unclassified|elapsed (repeatable; predicates AND; required).
--ceiling <tier>The ceiling tier: advise, supervised or autonomous (required).
--id <id>Rule id to replace (omit to create a new rule).
--note <text>Audit note (e.g. the classification policy the rule enforces).
--server <url>Server base URL. Default: the active context, then OPSCHAIN_SERVER.
--auth-token <token>Admin bearer token override. Default: your opschain login session, then $OPSCHAIN_ADMIN_TOKEN, then the token stored by opschain admin login for that server.

Output​

The stored rule: id, predicates, ceiling, note, updated_by, updated_at.