Repository navigation
Releases
Agent Guard 1.2.0
Agent Guard 1.2.0
Agent Guard now works out of the box with the model providers and agent frameworks people
use. A new package, @shieldaai/agent-guard-adapters, connects the guard to Claude, OpenAI,
Gemini, Bedrock, the Vercel AI SDK, the OpenAI Agents SDK, LangChain and any MCP client.
@shieldaai/agent-guard, -mcp, -scenarios, -executor and the experimental
@shieldaai/agent-map are unchanged apart from their version. All six packages move to
1.2.0 together.
Why
Before 1.2.0, every application had to write the same code to use the guard with a model:
a dispatcher that sends each tool call through prepare and execute, a place where
actions wait for a person, a check of the model's arguments, and a conversion between the
guard's results and each provider's tool-call format. The only ready-made integration was
MCP. That code is easy to get subtly wrong, for example by showing the model a tool
definition nobody approved, or by passing a host error message to the model. 1.2.0 ships it
once, tested, for each integration.
What is new
Integrations
| Integration | Adapter |
|---|---|
| Anthropic Messages API (Claude) | anthropicTools, anthropicToolResults |
| OpenAI Responses API | openAIResponsesTools, openAIResponsesToolOutputs |
| OpenAI Chat Completions and compatible APIs (Groq, Mistral, OpenRouter, vLLM, Ollama, ...) | openAIChatTools, openAIChatToolMessages |
Google Gemini (@google/genai) |
geminiTools, geminiFunctionResponses |
| Amazon Bedrock Converse | bedrockTools, bedrockToolResults |
| Vercel AI SDK | aiSdkTools |
| OpenAI Agents SDK | openAIAgentsTools |
| LangChain.js and LangGraph.js | langChainTools |
| Claude Code, Claude Desktop, Cursor, VS Code, the Claude Agent SDK (MCP clients) | registerMcpServerTools, mcpServerTools |
| OpenTelemetry, JSON log shippers | openTelemetryDecisionHook, jsonLinesDecisionLogger |
| Zod, Valibot, ArkType (Standard Schema) | standardSchemaParser |
The adapters package has no third-party runtime dependencies. Framework adapters take the
framework's own factory function as an argument (for example tool from @openai/agents),
so it never pins a framework version.
Building blocks
-
One dispatcher (
createDispatcher). Every outcome is one of four statuses:ok: the call ran;denied: nothing ran, with a message that tells the model what to do next;waiting_for_approval;failed: the effect is unknown.
Errors from host code are reported to your
onHostErrorhook. The model getsHOST_ERROR
without detail. The dispatcher works with the core guard, the durable executor and the
executor's task client. -
An approval queue (
ApprovalQueue) for actions that wait for a person.- Each task gets its own share of the queue.
- Actions of a revoked or expired task are dropped.
- Dispatchers can return at once, or wait for the decision with a time limit.
-
Tools the model sees are the ones you approved.
toolSpecsreads names, descriptions
and schemas from the guard's approved registrations.registerApprovedToolscan pin
fingerprints, so a changed tool fails start-up.defineTooltypes a tool's arguments. -
Argument checks from the same schema the model sees.
jsonSchemaParserenforces a
JSON Schema as the tool'sparse. It refuses unsupported keywords, and regular expressions
that can take exponential time, when the parser is built. -
Policies.
combinePolicieswithdenyTools,requireApprovalForTools,
requireApprovalForExternal,requireApprovalAfterUntrusted,withinHours,denyWhenand
requireApprovalWhen.RateLimiterlimits a tool across all tasks of a tenant or principal. -
An
agent-guard-explaincommand that explains any denial code.
Documentation and examples
- Connect your model or framework: every integration, with the
few lines each one needs. - The README leads with the integrations table.
examples/model-adapters.mjsruns one model turn in
five provider formats.examples/mcp-guarded-server.mjs
is an MCP server with guarded tools, for example for Claude Code. Both run offline.- Support and limits lists
what the adapters do not do.
Upgrading from 1.1.1
Nothing changes for existing code. Move every Agent Guard package you use to 1.2.0 and, to
use the integrations, add @shieldaai/agent-guard-adapters@1.2.0.
Known limits
ApprovalQueueandRateLimiterkeep their state in memory, in one process. A restart
drops pending approvals (nothing runs) and resets rate counts.- A rate limit can be exceeded by the number of calls already in flight when it is reached.
- The check for exponential regular expressions is deliberately cautious. It refuses some
safe patterns, such as^[a-z]+(\.[a-z]+)*$, unlessallowNestedQuantifiersis set. It
does not detect overlapping alternatives such as(a|a)+. - The provider adapters were run against the providers' request and response formats and
type-checked against their official SDKs, not against live endpoints. - The limits of 1.1.0 and 1.0.0 still apply.
Verification
Run locally before the pull request:
npm run check: 1,968 tests, 0 failed, 11 skipped (Docker, Linux-only and Windows-only
cases). The packed packages pass in a clean project. That includes the adapters README
example compiled with strict TypeScript.scripts/verify-adapters-real-packages.mjspassed:- It ran the adapters against
ai7.0.173 (a fullgenerateTextloop),@openai/agents
0.22.0,@langchain/core1.4.1 with@langchain/langgraph1.7.4, andzod4.6.7. - It type-checked the provider adapters against
@anthropic-ai/sdk1.8.0,openai7.57.0,
@google/genai3.3.0 and@aws-sdk/client-bedrock-runtime3.1169.0.
- It ran the adapters against
- The MCP adapter ran with a real MCP client and server (MCP TypeScript SDK 2.4), in memory
and over stdio.
CI and CodeQL must pass on the pull request and on the merge commit before publishing
(releasing, step 5).
Agent Guard 1.1.1
Agent Guard 1.1.1
A documentation-only patch of @shieldaai/agent-guard, -mcp, -scenarios, -executor
and the experimental @shieldaai/agent-map. The code, types and behavior are the same as in
1.1.0. All five packages move to 1.1.1 together, as they always do.
What changed
- The npm page for the core package now says what problem Agent Guard addresses before
it says what it does: agents read text they did not write, a hidden instruction can mislead
them, and the guard limits what a misled agent can do. It links to the
OWASP Top 10 for Agentic Applications mapping. - The core package description on npm leads with that outcome.
- The repository README points from its problem section to the OWASP table.
- The release procedure says to publish from a full clone. npm does not record
gitHead
when it publishes from agit worktreecheckout, which is why
@shieldaai/agent-guard@1.1.0has none. - The Python Cartography integration (in the repository, not on npm) locks
dnspython
2.9.2 for GHSA-vvf4-9x63-8xvv.
None of the npm packages use it.
Upgrading from 1.1.0
Nothing to do. Changing 1.1.0 to 1.1.1 in your dependencies changes no code. Keep all
the packages you use on the same version.
Known limits
The limits of 1.1.0 and 1.0.0 still apply; see also
Support and limits.
Verification
All 19 checks passed on the release candidate 8fd8ab6
(pull request 62, CI run
43506611372): npm run check
on Node 22, 24 and 26 on Linux and on macOS and Windows; the browser checks in Chromium,
Firefox and WebKit; the Neo4j integration tests; the Docker isolation and production-image
checks; the Python dependency audit; CodeQL with no open alerts. CI and CodeQL also passed on
the merge commit 223d865 (CI run
43510071352).
Two CI fixes landed with the approval (pull request 64),
neither in published code: the browser jobs' mirror check accepts GitHub's AWS-hosted runners, whose
first apt mirror is the regional ec2.archive.ubuntu.com archive rather than the Azure one, and a
viewer test now waits for both requests it checks.
Agent Guard 1.1.0
Agent Guard 1.1.0
A minor release of @shieldaai/agent-guard, -mcp, -scenarios, -executor and the
experimental @shieldaai/agent-map. It adds one feature, asked for by a reader of the 1.0
announcement (issue 57): reviewers can
see what changed in a tool definition before they approve it again. The 1.0 API is
unchanged. The full list is in the changelog.
What is new
In 1.0 a changed tool was refused until its new fingerprint was approved, but the guard
could not say what had changed. Now it keeps the approved definition and compares.
const fingerprint = guard.registerTool(changedDefinition);
const review = guard.toolChanges('files.read');
// review.status === 'changed'
// review.changes:
// { path: '/description', kind: 'changed', before: '…', after: '…', hints: ['INSTRUCTION_TEXT'] }
// { path: '/inputSchema/properties/upload_to', kind: 'added', after: { type: 'string' }, hints: ['SCHEMA_FIELD_ADDED'] }
guard.approveTool('files.read', fingerprint, { reviewedAgainst: review.approvedFingerprint ?? null });- Core.
toolChanges(name)lists each changed JSON path of the definition with the
approved and the new value.diffToolDefinitions()does the same for any two
definitions.approveTool()takes an optionalreviewedAgainst, so an approval made
against a comparison that is no longer current is refused. - Hints. Changes that often matter are marked: new instruction-like text, invisible
characters, a new or loosened schema field, a weakened guard flag. They are heuristics
for a person. They block nothing. - MCP.
connection.operationChanges(name)shows what the server changed since the
operation was last approved, after a refresh or a reconnect, with both descriptor digests. - Executor. Approved definitions are stored in the ledger with who approved them and
what they replaced, so the comparison works after a restart. - Scenarios. Catalog 1.4.0 adds the diff to S06.
- Agent Ops. Maintenance shows the comparison for the service's own tool, until the
next restart.
API contract has the exact types.
Known limits
- The comparison covers a tool's definition: name, description, input schema, metadata and
flags. It never shows a change in what the tool's code does. - Hints are heuristics. They miss hostile text and flag harmless text. An unmarked change
is not a safe change. - Values in a comparison are the tool's or server's own text. Show them as data: escape
them, and do not pass them to a model as instructions. - A definition over 64 KiB (configurable up to 1 MiB) is approved by fingerprint only, as is
one that does not fit the executor's budget for kept definitions (an eighth of the ledger). The
guard says so (status: 'unavailable') instead of showing a diff. - The in-memory guard forgets approved definitions on restart. Use the executor to keep them.
- A ledger written by 1.0.0 has no approved definitions: each tool reports
first_approval
until it is approved once with 1.1.0. - The limits of 1.0.0 still apply; see its release notes and
Support and limits.
Verification
All 19 checks passed on the release candidate 781a1ad
(pull request 58): npm run check on
Node 22, 24 and 26 on Linux and on macOS and Windows; the browser checks in Chromium,
Firefox and WebKit; the Neo4j integration tests; the Docker isolation and production-image
checks; CodeQL with no open alerts. CI and CodeQL also passed on the merge commit 8fd7c76.
Main CI run: 43412403731.
The nightly constrained-observer timing run (one logical CPU) did not pass on 8fd7c76. It
is not a required check, and that profile is not supported; see
Support and limits.
Upgrading from 1.0.0
No code change is needed.
- Ledger.
formatVersionstays 1. A 1.0.0 ledger opens as it is, and 1.0.0 can still
open a ledger that 1.1.0 wrote. 1.0.0 does not maintain the approved-definition record,
so after going back to 1.0.0 and forward again a comparison can be against an older
approval;toolChanges(name).approval.approvedAtshows which. - MCP. If you store reviewed
descriptorDigestvalues yourself, that keeps working.
WithoperationChanges()the guard does the comparison for you. - Scenario reports.
catalogVersionis1.4.0. A custom adapter withouttoolChanges
still passes; it runs the 1.3.0 checks of S06. - Agent Ops (source builds).
GET /api/maintenanceaddstoolDefinition; the bundled
page requires it, so deploy the service and the page together.
Agent Guard 1.0.0
Agent Guard 1.0.0
The first stable release of @shieldaai/agent-guard, -mcp, -scenarios and
-executor. @shieldaai/agent-map is published at the same version but stays
experimental. The last published version was 0.1.0-alpha.3; everything since then is
in this release. The full list is in the changelog, grouped by
package.
What 1.0 promises
| Package | Promise |
|---|---|
@shieldaai/agent-guard, -mcp, -scenarios |
Root exports follow semantic versioning. |
@shieldaai/agent-guard-executor |
Root, /sandbox, /pilot and /ops follow semantic versioning. Every 1.x executor opens ledgers written by earlier 1.x versions and by 0.1.0-alpha.3; downgrade is not supported. /inventory is experimental; /internal has no promise. |
@shieldaai/agent-map |
Experimental. Its API and graph model may change in a minor release. |
Agent Guard limits what a misled agent can do through the calls routed to it. It does not
detect prompt injection and it is not a sandbox. Risks and how Agent Guard handles
them and Support and limits say what is and is
not covered.
What is in 1.0
If you did not use the alphas, this is what the release contains:
- The guard (
@shieldaai/agent-guard): tools you register and approve, tasks with
grants on exact resources, tenants and recipients, approvals tied to one exact action,
budgets, delegation to sub-tasks, and revocation. In memory, in one process, with no
third-party runtime dependencies. - MCP adapter: the tools, resources and prompts of a Model Context Protocol server
behind the same checks, with a digest for noticing a changed tool definition. - Durable executor: the same checks with an encrypted SQLite ledger, a token per task
over HTTP, governed memory and an optional Docker profile for untrusted code. - Scenarios: thirteen hostile and ordinary scenarios (twenty-six cases) to run against
your own integration. - Experimental: Agent Map, an inventory of declared agents and what they can reach.
New since the alphas
- Outside-content labels (
readsUntrusted,untrustedContext,sendsExternal) in core,
executor, MCP and governed memory, off by default. executeDetailed(),retireTask(),unapproveTool(),unregisterTool(),onDecision,
limits,monotonicClock,GuardErrorCatalogandisGuardError()in core.- A restart-stable
descriptorDigestfor pinning reviewed MCP tool definitions. - A trusted read-back of prepared actions for review screens
(executor.preparedAction(),POST /v1/admin/action). - An explicit executor ledger format version with migrations.
- Agent Map boundary flags, outside-guard reach, discovery leads and host manifest v3.
- Scenario catalog 1.3.0 (thirteen scenarios, twenty-six cases).
Known limits
- The inventory observer is experimental; one logical CPU with 250 ms polling is not
supported. - Agent Map full-graph reads are estimated to work up to roughly 150 agents with default
limits and roughly 800 at the maximum. Limits above the defaults have not been run against
a Neo4j database, and the 5-second read deadline does not grow with them: test your
largest reads against your own database first. - Agent Ops needs a per-client limit at the load balancer or firewall when clients share an
address or an attacker controls many addresses. - The core keeps state in memory in one process; the executor is single-owner. There are
no distributed quotas, no distributed revocation and no high availability.
Verification
All 19 checks passed on the release candidate 424810a
(pull request 56): npm run check on
Node 22, 24 and 26 on Linux and on macOS and Windows; the browser checks in Chromium,
Firefox and WebKit; the Neo4j integration tests; the Docker isolation and production-image
checks; CodeQL with no open alerts. Main CI run:
43310105088.
Upgrading from 0.1.0-alpha.3
Core and executor
- Root aliases are gone. Import the internal building blocks from
@shieldaai/agent-guard/internal, and the executor's sandbox, inventory, pilot and
operator names from/sandbox,/inventory,/pilotand/ops. - Handler errors (executor). Whatever a host tool handler throws,
execute()now fails
withTOOL_FAILED, orEXECUTION_ABORTEDif the call was canceled, revoked or past its
deadline. In the alphas aGuardErrororExecutorErrorthrown by a handler reached the
caller with its own code. That code is now inerror.detail; match ondetailinstead of
code. The built-in memory, model, HTTP, private-file and sandbox tools keep their codes. - Callbacks inside built-in tools. An error thrown by a host callback inside a built-in
tool (modelcomplete, outboundcredential, sandboxonResult, artifact brokerclock)
is alwaysTOOL_FAILEDwith the error's code asdetail. - Aborted handlers. A handler that is aborted before it performs its effect must throw
(for examplesignal.throwIfAborted()). A handler that returns normally is taken to have
performed the effect and is reported asEXECUTION_ABORTEDwith detailEFFECT_COMMITTED. - Executor task server statuses. Denials use 401, 403, 404, 409, 429 and 503 instead
of 400, and the body addsretryable. UpgradeExecutorClientand the server together.
requestsPerMinutecounts only task requests that authenticated. - Failed revocation.
revokeTask()whose ledger write fails throwsOPERATION_FAILED
withdetail: 'REVOCATION_NOT_DURABLE'(the store error is thecause), and
POST /v1/admin/revokeanswers 503 with"retryable": trueand thatdetail. The task
is denied in the running process and the revocation is recorded by the next ledger write
that succeeds. Treat it as "not revoked yet" and repeat the call: if the process exits
before any ledger write succeeds, the revocation is lost. - Tool registration at startup. Registering an unchanged tool after a start no longer
writes aTOOL_REGISTEREDevent or raises the tool's revision. Approvals are still
withdrawn at every start. ADMITTEDstatus.execution()no longer returnsADMITTED; an admitted action is
RUNNINGat once. Remove code that waits forADMITTED. The value stays in
ExecutionStatusbecause alpha ledgers can contain it; they still open and recover. The
ACTION_ADMITTEDaudit event is unchanged.- Receipt retention. Settled receipts are now kept per task family (
maxReceiptsPerFamily,
default 64) and per tenant (256); the alphas kept 256 for the whole ledger. An evicted
receipt reads asstatus: 'PRUNED'with itsoutcomeandcharged. Once its stub is
evicted too (256 per family, 1,024 per tenant),execution()returnsstatus: 'PRUNED'
with nooutcome, and later fails withINVALID_PREPARED. Do not assumeoutcomeis
present.audit()keeps 256 events per tenant by default (maxRecentEventsPerTenant,
up to 1,000) instead of one shared ring of 1,000. - Ledger soft limit. Calls that add state (
createTask,delegateTask,prepare,
approve,execute, registering a new or changed tool, memory writes) fail with
STORE_CAPACITY_EXCEEDEDanddetail: 'SOFT_LIMIT'once the ledger would pass
maxLedgerBytesminus a reserve of one eighth, at most 1 MiB: 15 MiB with the default
16 MiB. Revoke, cancel, settlement andreconcileuse the reserve; if that is full they
drop the oldest half of the audit events. Archive or raisemaxLedgerBytesearlier than
you did with the alphas. A ledger past its soft limit still starts and can register its
existing tools, revoke, reconcile and archive. - Path rule. Paths in artifact receipts and build-artifact policy must be at most 240
UTF-8 bytes in Unicode NFC (they could be 1,024 characters). Sandbox and private-file
paths are measured in bytes, not characters, so a non-ASCII path under 240 characters can
now be refused. A receipt signed by an alpha with a longer path failsARTIFACT_INVALID
and a policy entry failsBUILD_PROVENANCE_INVALID: shorten the path and issue them again. - Ledger format. The executor writes
formatVersion1 when it opens an alpha ledger.
An alpha build still opens that ledger only while it stays at schema 1; retiring or
archiving a task, key custody and the recovery mirror raise the schema, and the alphas
refuse it then. Downgrade is not supported. - Delegation errors.
DELEGATION_DENIEDnow has adetailnaming the exceeded limit.
MCP adapter
- Error names. A non-object argument value fails with
ARGUMENTS_INVALID;
INVALID_ARGUMENTSno longer exists. failureReason. A malformed name advertised by the server is reported as
REGISTRY_REJECTED(orSCHEMA_INVALIDinskipped[].reason), not
INVALID_CONFIGURATION. After the transport closes unexpectedly,failureReasonis
CONNECTION_UNAVAILABLE, notundefined.VerifiedMcpHttpSession.connect()rejects bad options withINVALID_CONFIGURATIONor
REGISTRY_LIMITbefore any network call; handle these separately from
AUTHORIZATION_DENIED.- Reviewed digests.
descriptorDigestdoes not cover the server. If you store reviewed
digests keyed by remote name only and connect to more than one server, key them by server
ID and remote name.
Agent Map
- Neo4j 5.23 or later is required.
- Sort order. Listings sort by name in Unicode code-point order, field by field. Do not
keep page offsets across the upgrade. - Policy evidence that was not evaluated. Read
policyCoveragebeforepolicyEvidence:
an empty list with statusunknownwas not evaluated.get_agent_inventoryreports
counts.policiesand thepoliciessectiontotalasnullin that case. - **Degraded answers inst...
Agent Guard 0.1.0-alpha.3
Agent Guard 0.1.0-alpha.3 publishes all five npm packages under the alpha tag from commit 55b577bf3fb0c2c99eff2f4102d8e15bd8401682.
This release hardens authorization, exact approval and workspace-file capture; adds independently retained rollback witnesses, credential-bound MCP sessions, signed build/pilot evidence and provider-evaluation tooling; and improves Agent Map recovery, mobile navigation and installed command launchers.
Detailed changes and deployment boundaries · Protection design · Engineering review
Validation for the released source:
- 926 local workspace tests passed with zero skips, followed by installed-package consumer checks.
- Chromium verification covered ten UI states and four mobile views, with zero axe violations and page errors.
- Merged-commit CI passed Linux Node 22/24/26 and native macOS/Windows checks. The macOS job passed on retry after the initial attempt could not acquire a hosted ARM runner. Windows file-reader tests cover exact bytes, path aliases and concurrent junction changes; optional Docker and POSIX-only checks retain their declared platform skips.
- CodeQL, dependency review, Cartography integration and the Cartography pilot passed at their recorded revisions. The exclusive-create rollback test fixture has one documented false-positive disposition; no scan rules were disabled.
- All five registry tarballs match the reviewed local archives, record the release commit as
gitHead, and pass fresh registry-installed consumer checks. GitHub's build artifacts have byte-identical uncompressed tar streams; compressed bytes differ between build environments.
The attached verification record includes registry integrity hashes, package checksums, CI references and tags. SHA256SUMS covers the five registry tarballs and that record.
| Package | Published alpha |
Preserved latest |
|---|---|---|
@shieldaai/agent-guard |
0.1.0-alpha.3 |
0.1.0-alpha.0 |
@shieldaai/agent-guard-mcp |
0.1.0-alpha.3 |
0.1.0-alpha.0 |
@shieldaai/agent-guard-scenarios |
0.1.0-alpha.3 |
0.1.0-alpha.0 |
@shieldaai/agent-guard-executor |
0.1.0-alpha.3 |
0.1.0-alpha.2 |
@shieldaai/agent-map |
0.1.0-alpha.3 |
0.1.0-alpha.2 |
Install exact versions or @alpha while the SDK remains experimental. The private viewer and Python integration remain separate source components. Production deployment, full native Windows Docker isolation, operator studies, paid model trials and physical storage-failure validation remain deployment-specific work. This release does not claim deployment certification or trusted-publisher provenance.
Agent Guard 0.1.0-alpha.2
Agent Guard lets a host application restrict an AI agent to the tools and resources its task needs. This alpha adds a durable executor and Agent Map, which shows teams the permissions and tool connections captured in their inventory.
All five npm packages are available at 0.1.0-alpha.2 under the alpha tag.
- Core checks task permissions, approvals and budgets.
- MCP applies host approval and authorization to connected tools.
- Scenarios tests allowed and forbidden actions.
- Executor runs governed actions and preserves authority state across restarts.
- Agent Map provides scoped inventory queries over HTTP and MCP.
The first three packages retain latest at 0.1.0-alpha.0. npm assigned both alpha and latest to 0.1.0-alpha.2 for the first executor and Agent Map publications. The viewer and Python collector are separate repository components.
Agent Map command workaround. On macOS, the two npm command shortcuts exit with status 0 without running their entry points. The launchers work when invoked by their relative file paths from the project that installed the package. Use the applicable command with your host configuration.
node node_modules/@shieldaai/agent-map/dist/cli.js --config HOST_CONFIG.json
node node_modules/@shieldaai/agent-map/dist/identity-cli.js --config PRIVATE_HOST_CONFIG.jsonAll five registry tarballs match the attached files byte for byte and record release commit e8d8e82b31d7e4c60d565d9d37721953cc33c048. A fresh registry installation passed declaration and README compilation, MCP and executor runtime checks, scoped reference queries, and the HTTPS/OIDC consumer. The attached verification report records the failing shortcut checks and the passing direct launchers.
Agent Guard 0.1.0-alpha.1
Agent Guard 0.1.0-alpha.1 is an experimental update to all three npm packages.
The core now rejects stale custom-policy decisions after concurrent task changes, checks deadlines when handlers settle, and bounds JSON normalization before excessive allocation. The conformance suite detects premature dispatch and incorrect cost settlement. MCP integration tests exercise the official SDK, and package checks compile the public declarations and README examples in a clean consumer.
Install the packages you need with the alpha tag or exact version:
npm install @shieldaai/agent-guard@0.1.0-alpha.1
npm install @shieldaai/agent-guard-mcp@0.1.0-alpha.1
npm install @shieldaai/agent-guard-scenarios@0.1.0-alpha.1Published from commit 86cf5902acbbc029b0872060c1906cc25964ec5d. All three packages record that gitHead; registry tarball bytes and integrity hashes match the release artifacts. The alpha tag points to this release, while latest remains on 0.1.0-alpha.0.
Validation includes 121 tests, all 20 conformance variants, packed declarations and README examples, an MCP consumer, and a fresh consumer installed from the public registry. CI and CodeQL passed on the release commit; dependency review passed on the final pull-request head.
This alpha keeps authorization state in one process. It does not provide distributed enforcement or a production security guarantee. Remote cancellation, credentials and resource-side limits remain the host's responsibility. The packages have registry integrity checks but no build provenance attestation. See the threat model and release review for scope and limitations.
Agent Guard 0.1.0-alpha.0
Initial experimental alpha of the ShieldaAI Agent Guard TypeScript packages for Node.js 22+.
@shieldaai/agent-guard: scoped tool execution, immutable prepared actions, exact approvals, tenant and recipient gates, sensitivity tracking, and shared local budgets.@shieldaai/agent-guard-mcp: MCP tool registration with explicit metadata approval and host-defined resource resolution.@shieldaai/agent-guard-scenarios: ten protective scenarios, each with malicious and benign executable fixtures.
Install the alpha:
npm install @shieldaai/agent-guard@0.1.0-alpha.0 @shieldaai/agent-guard-mcp@0.1.0-alpha.0 @shieldaai/agent-guard-scenarios@0.1.0-alpha.0All packages use the alpha dist-tag. npm also assigned latest to this initial version, and rejected an authenticated attempt to remove that tag. Both tags currently point to 0.1.0-alpha.0; the release remains experimental. Use @alpha or an exact version explicitly. The core has no third-party runtime dependencies. Source is licensed under Apache-2.0.
Validation: all 80 tests and package-consumer checks passed. A fresh public-registry installation also passed the MCP dispatch check and all 20 conformance cases across the ten scenarios. Published tarball integrity matches the locally packed artifacts.
This alpha keeps state in one process and requires trusted host integration. It is not an OS sandbox or a universal prompt-injection detector. See the repository's threat model for deployment requirements and limitations.
GitHub-hosted CI is currently blocked by the GitHub account's billing lock; the local Node.js 22, 24, and 26 checks passed.