@ory/argus 1.4.5 → 1.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,14 +25,14 @@ print, inspect, commit, or place in a prompt:
25
25
 
26
26
  - `ORY_USER_OAUTH2_TOKEN`
27
27
  - `ANTHROPIC_API_KEY`
28
- - any streamed deployment credential value
28
+ - any deployment credential value
29
29
  - SPIFFE private keys or SVID file contents
30
30
 
31
31
  The user OAuth2 token administers deployments as the signed-in identity. The
32
32
  generated `ORY_AGENT_API_KEY` or customer-issued SVID is a separate runtime
33
- credential. Never exchange their roles. Do not revoke a deployment or workload
34
- registration that predates the current run. Always revoke the fresh deployment
35
- created for the current streamed-credential run during cleanup.
33
+ credential. Never exchange their roles. A deployment package is the durable
34
+ registered agent; reuse it across sessions and revoke it only when the user is
35
+ retiring that agent and package.
36
36
 
37
37
  ## Prerequisites
38
38
 
@@ -146,8 +146,8 @@ to `0.0.0.0`, expose the application port, and define a health check. Ignore
146
146
  credentials, deployment state, dependencies, build output, and local environment
147
147
  files in Git and the Docker context.
148
148
 
149
- For Talos, the trusted deployment controller must inject the streamed values
150
- directly into the workload's runtime secret facility without creating a local
149
+ For Talos, the trusted deployment controller must inject the stdin values
150
+ directly into the workload's runtime secret facility without creating another
151
151
  credential file. For SPIFFE, use the file-backed environment contract in
152
152
  `examples/spiffe`: mount the parent of the atomically switched `current`
153
153
  generation read-only, and point `ORY_AGENT_SPIFFE_GENERATION_PATH` at `current`.
@@ -214,8 +214,8 @@ explicit owner must equal the authenticated identity.
214
214
 
215
215
  ## Create and deploy
216
216
 
217
- Let the CLI create a fresh deployment and launch the trusted deployment
218
- controller:
217
+ Let the CLI create or validate the durable deployment and launch the trusted
218
+ deployment controller for a session:
219
219
 
220
220
  ```bash
221
221
  ory-agent deployment run \
@@ -223,22 +223,21 @@ ory-agent deployment run \
223
223
  -- trusted-deployer --credentials-stdin
224
224
  ```
225
225
 
226
- The CLI sends the exact credential only to the child process's anonymous stdin,
227
- never public stdout, a shell variable, log, or intermediate file. It strips its
228
- deployment-administration credentials from the child environment. The optional
229
- mode-`0600` result is non-secret and contains the newly created deployment ID.
230
- Every invocation issues a new deployment and writes no credential, state,
231
- pending journal, plaintext stage, or age identity.
226
+ The CLI stores the credential in a protected mode-`0600` file, sends it only to
227
+ the child process's anonymous stdin, and never writes it to public stdout, a
228
+ shell variable, or a log. It strips deployment-administration credentials from
229
+ the child environment. The optional result identifies whether the deployment
230
+ was created or reused. Later invocations validate the same registered agent and
231
+ start another session with the same credential and policy.
232
232
 
233
233
  The trusted controller must load stdin in memory, inject the values into the
234
234
  workload secret facility, start and supervise the workload, verify `/healthz`,
235
235
  invoke the guarded `/probe`, and exit only when that bounded workload run is
236
236
  finished. For a long-running service, the controller must remain its supervisor;
237
237
  do not detach and exit while the workload still needs the credential. After a
238
- successful controller exit, the CLI waits for **Active** and automatically revokes.
239
- It also revokes after controller failure, and a revoke failure makes the command
240
- fail. Process termination before cleanup can still orphan a deployment; inventory
241
- and explicitly revoke it rather than assuming a rerun will recover or reuse it.
238
+ successful controller exit, the CLI waits for **Active** and retains the
239
+ deployment for future sessions. Controller failure also leaves the registered
240
+ agent intact. Use `ory-agent deployment revoke` only to retire the package.
242
241
 
243
242
  ## Customer-operated SPIFFE
244
243
 
@@ -306,5 +305,5 @@ Report changed files, format/typecheck/test/build results, Docker health,
306
305
  non-secret deployment ID and status, fixed-query and user-query probe results,
307
306
  activation status, and blockers. Never report credentials, environment values,
308
307
  authorization headers, or credential-file contents. The trusted controller must
309
- clean up its bounded workload before exiting; `deployment run` then revokes the
310
- fresh Agent Security deployment automatically.
308
+ clean up its bounded workload before exiting; `deployment run` then retains the
309
+ same Agent Security deployment for the next session.
@@ -16,9 +16,9 @@ Use this playbook to turn the user's intent into a complete, secured deployment:
16
16
  The user should be able to ask for an agent in product terms. Inspect the repository,
17
17
  preserve its package manager and conventions, scaffold the application and controller,
18
18
  run validation, and deploy it through the commands below. Ask before overwriting an
19
- existing application or revoking a deployment that predates the current run. Always
20
- revoke the fresh streamed-credential deployment during cleanup. Ask for missing
21
- credentials; never fabricate them.
19
+ existing application or revoking a deployment. Reuse the deployment package across
20
+ agent sessions and revoke it only when the user intends to retire that registered
21
+ agent. Ask for missing credentials; never fabricate them.
22
22
 
23
23
  Use `ory-build-agent` for another SDK and `ory-deploy-agent` for the canonical Claude
24
24
  Agent SDK Docker/Kubernetes deployment. Use `ory-e2b-sandbox` only when installing an
@@ -29,7 +29,7 @@ SDK application deployment.
29
29
 
30
30
  Keep these components separate:
31
31
 
32
- 1. The trusted controller holds `E2B_API_KEY`, `OPENAI_API_KEY`, and the streamed
32
+ 1. The trusted controller holds `E2B_API_KEY`, `OPENAI_API_KEY`, and the deployment
33
33
  deployment values in memory.
34
34
  2. The E2B template contains only source and pinned dependencies. It contains no
35
35
  credentials and no Agent start command.
@@ -42,7 +42,7 @@ Never print, inspect, commit, upload, or place in a prompt:
42
42
 
43
43
  - `OPENAI_API_KEY` or `E2B_API_KEY`
44
44
  - `ORY_AGENT_API_KEY`
45
- - any streamed deployment credential value
45
+ - any deployment credential value
46
46
  - a user OAuth2 token
47
47
 
48
48
  Never inject `ORY_USER_OAUTH2_TOKEN` into E2B. The deployment package is a complete
@@ -223,8 +223,8 @@ package_recipe_version: v1
223
223
  credential_method: talos_api_key
224
224
  ```
225
225
 
226
- Review the plan. Then let the CLI create a fresh deployment and launch the
227
- trusted E2B controller:
226
+ Review the plan. Then let the CLI create or validate the durable deployment and
227
+ launch the trusted E2B controller for a session:
228
228
 
229
229
  ```bash
230
230
  ory-agent deployment run \
@@ -232,15 +232,13 @@ ory-agent deployment run \
232
232
  -- trusted-e2b-controller --credentials-stdin
233
233
  ```
234
234
 
235
- The CLI sends credentials only through the child process's anonymous stdin,
236
- never public stdout, a shell variable, log, or intermediate file. It strips
237
- deployment-administration credentials from the child environment. The atomic
238
- mode-`0600` result contains the non-secret new deployment ID. `run` writes no
239
- credential, state, pending journal, plaintext stage, or age identity. It waits
240
- for **Active** after the controller succeeds and automatically revokes on every
241
- normal success or failure path. A failed revoke fails the command. Process
242
- termination before cleanup can still orphan a deployment, so inventory and
243
- explicitly revoke it rather than assuming a rerun will recover it.
235
+ The CLI stores the reusable credential in a protected mode-`0600` file and sends
236
+ it only through the child process's anonymous stdin, never public stdout, a shell
237
+ variable, or a log. It strips deployment-administration credentials from the
238
+ child environment. The atomic result records whether the deployment was created
239
+ or reused. `run` waits for **Active** after the controller succeeds and retains
240
+ the registered agent on success or failure so later sessions use the same policy.
241
+ Revoke explicitly only when retiring the deployment package.
244
242
 
245
243
  ## Launch through the trusted controller
246
244
 
@@ -279,7 +277,7 @@ runtime request. Therefore use this order:
279
277
  2. Run the fixed guarded probe inside it with command-scoped credentials.
280
278
  3. Verify the expected output files exist without dumping process environment.
281
279
  4. Run the user's page-generation prompt and validate the static output.
282
- 5. Exit successfully so `ory-agent deployment run` verifies **Active** and revokes.
280
+ 5. Exit successfully so `ory-agent deployment run` verifies **Active** and retains the deployment for the next session.
283
281
 
284
282
  Start in Agent Security `observe`, review the recorded decision and activity, grant the
285
283
  expected tool, deliberately promote policy to `enforce`, and prove an explicit deny keeps
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "repo": "ory-agent-plugins",
3
- "commit": "67c4aa0b2d79b2330f110faa9be5340e816eec61",
4
- "commitShort": "67c4aa0",
3
+ "commit": "d63aedaf130bd1428bd62351c7f1918ec48f5aae",
4
+ "commitShort": "d63aeda",
5
5
  "branch": "main",
6
- "commitDate": "2026-10-02T21:10:37-07:00",
6
+ "commitDate": "2026-10-03T12:37:35-07:00",
7
7
  "dirty": false,
8
- "builtAt": "2026-10-03T04:14:34.181Z"
8
+ "builtAt": "2026-10-03T19:41:09.590Z"
9
9
  }
@@ -319,10 +319,16 @@ class AgentSecurityEventReporter {
319
319
  return "retain";
320
320
  const controller = new AbortController();
321
321
  this.activeRequest = controller;
322
- const remaining = this.flushDeadline === undefined
323
- ? this.requestTimeoutMs
324
- : Math.max(1, Math.min(this.requestTimeoutMs, this.flushDeadline - Date.now()));
325
- const timeout = setTimeout(() => controller.abort(), remaining);
322
+ const flushRemaining = this.flushDeadline === undefined
323
+ ? undefined
324
+ : this.flushDeadline - Date.now();
325
+ const expiresWithFlush = flushRemaining !== undefined && flushRemaining <= this.requestTimeoutMs;
326
+ const remaining = Math.max(1, Math.min(this.requestTimeoutMs, flushRemaining ?? this.requestTimeoutMs));
327
+ const timeout = setTimeout(() => {
328
+ if (expiresWithFlush)
329
+ this.flushExpired = true;
330
+ controller.abort();
331
+ }, remaining);
326
332
  timeout.unref?.();
327
333
  try {
328
334
  const url = `${this.options.agentSecurityUrl.replace(/\/+$/, "")}/agent-security/v1/events:record`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ory/argus",
3
- "version": "1.4.5",
3
+ "version": "1.4.7",
4
4
  "description": "Ory Argus: the core API for building authentication, authorization, and audit into AI agent harness plugins, extensions, and custom integrations",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://ory.com",