Proposing ASBOM (Agentic-System Bill of Materials) — new CycloneDX BOM type +
principal field
#940
mhupfauer
started this conversation in
Ideas, Proposals, RFCs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Proposing a new CycloneDX BOM type — Agentic-System Bill of Materials (ASBOM) — alongside SBOM, ML-BOM, SaaSBOM, CBOM, HBOM, OBOM, and MBOM. ASBOM inventories the runtime composition of an agentic AI deployment: model + harness + skills + MCP servers + runtime + the identities under which each part executes. The schema addition this requires is one new field (
principal).Why a new BOM type, not just a profile
The agentic-AI ecosystem has rapidly moved to a place where capabilities (SKILL.md packages, MCP servers, plugins) are installable artifacts, hosts (Claude Code, Cursor, Gemini CLI, GitHub CLI) load them dynamically, and operating systems (Windows 11 Agent Workspace) now expose dedicated agent principals. The running composition of these parts — which model, in which harness, with which skills, in which runtime, under which credentials — is what determines an agentic system's effective authority and blast radius. It is the unit operators must audit, sign, and respond to in an incident.
None of the existing BOM types capture it:
ASBOM is that BOM type. It is expressible entirely in CycloneDX 1.7 primitives (
compositions,formulation.runtimeTopology,declarations,services.trustZone,components.type=machine-learning-model/platform/application) with one schema addition — theprincipalblock proposed below.The
principalfield (the one schema addition)Today
services.authenticated: bool+services.trustZone: stringcollapses four orthogonal axes into a single boolean. The proposedprincipalblock separates them:none,delegated-ambient(skill uses host'sghauth),delegated-obo(RFC 8693 token exchange),pat(long-lived bearer),service-principal,agent-account-os(e.g., Win11 Agent Workspace). Determines who the downstream audit log records as actor.none/in-memory/env-var/file/os-keychain/hardware-bound/broker. Determines exfiltration and off-device replay risk.session/short-lived-oauth/long-lived-pat/perpetual. Determines duration of compromise.none/per-grant/per-session/per-action. Determines whether a prompt-injected agent action is also a consented action.Real systems mix these axes — e.g., an MCP server can run as a service principal (axis 1) holding short-lived OAuth tokens (axis 3) stored in OS keychain (axis 2) with per-action consent (axis 4). Conflating them loses the information operators need.
Worked diff in the draft shows two MCP servers that look identical today (
authenticated: true, trustZone: internal) but resolve to wildly different governance postures onceprincipalis populated — one is delegated-OBO with DPoP-bound short-lived tokens in OS keychain; the other holds a perpetual PAT in an env var.The
principalfield is the motivation for ASBOM, but is itself generally useful for any composed system where components execute under distinct identities (CI pipelines with secrets, serverless function chains, multi-tenant SaaS). The primitive is not AI-specific; the motivating domain is.Why this is the right moment
CycloneDX 1.7's extension of
formulationto "any referenceable object … including the BOM itself" (description updated in commitf315e00) gives the right structural primitive for describing how an agentic system was assembled.declarations(with first-classassessors[].thirdParty) gives the third-party attestation surface.compositionswith JSF signature gives the unit-of-governance. The pieces are in place; ASBOM is the opinionated capability that ties them to the agentic-AI domain.Drafts
principalfield — JSON Schema fragment, backwards-compat analysis, full four-axis decomposition, non-repudiation framing, worked diff examplesRelated work
Asks
principalthe right grain, or are some of these axes better collapsed / expanded?principalattach —componentonly,serviceonly, both, or viadefinitionsfor reuse?Happy to split this into smaller proposals (
principalfield alone, ASBOM capability brand alone, axes as separate enums) if that's easier to land incrementally.Beta Was this translation helpful? Give feedback.
All reactions