@rosthq/cli 0.5.25 → 0.5.27

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.
package/dist/index.js CHANGED
@@ -42145,7 +42145,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
42145
42145
  order: 45,
42146
42146
  title: "How agents work",
42147
42147
  summary: "How {{brand}} agents operate inside seats, use Charters, report work, and escalate beyond authority.",
42148
- version: "2026-06-21.4",
42148
+ version: "2026-06-27.1",
42149
42149
  public: true,
42150
42150
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42151
42151
  stages: ["staffing", "operating_rhythm"],
@@ -42155,6 +42155,7 @@ Decisions should be recorded as human decisions. Handoffs should attach to seats
42155
42155
  "agent.status",
42156
42156
  "agent.list_fleet",
42157
42157
  "agent.fleet_digest",
42158
+ "system.health",
42158
42159
  "agent_setup.get",
42159
42160
  "agent_setup.update",
42160
42161
  "agent.decommission",
@@ -42235,11 +42236,19 @@ Provider requests carry only the model payload the runtime needs; run attributio
42235
42236
 
42236
42237
  Before an agent goes live, the sandbox dry run rehearses this against fake data and returns a per-tool preview: for each tool the agent would touch, whether it would run it, would be blocked, or would escalate \u2014 no external side effect. Review that preview before you approve go-live.
42237
42238
 
42239
+ ## Company guardrails
42240
+
42241
+ Beyond each seat's own manifest, the company can set one ceiling on how much an agent may do *autonomously*. Every tool's scope carries an autonomous-risk level \u2014 reading and drafting are low, writing-with-approval is high, and unrestricted access is critical; an unrecognized tool is treated as critical, never as safe. The guardrail caps that risk for the whole organization through a named profile (locked down, balanced, high autonomy, or a custom ceiling), with balanced as the default. An autonomous call that stays within the ceiling runs as usual; an autonomous call above it is treated as needing a human instead of acting on its own. Calls that are already human-gated or being escalated are never affected \u2014 the ceiling only ever narrows autonomous action, it never blocks the human-approval path. New organizations start balanced and in a watch-only mode, so the guardrail first reports where it would intervene before it begins enforcing.
42242
+
42238
42243
  ## What humans should review
42239
42244
 
42240
42245
  The Agents page shows fleet health first: live state, recent runs, failed runs, open held actions, last activity, cost, and the next operator action. It also shows configuration completeness for each staffed agent seat: Steward chain, lane or runtime substrate, vaulted credentials, granted tools, model config, sandbox dry run, and go-live state, each with a remediation link when incomplete. A seat's Trust Card drills into the same facts: run history, one-run detail, tool-call outcomes, product-visible errors, transcript references, loaded Skill versions, and held confirmations or escalations. Open confirmations stay visible until they are decided or expire, even when they are older than the default activity window. Approving or rejecting a held confirmation from the seat page is scoped to that seat; rejection can include a short reason.
42241
42246
 
42242
- Review the first dry runs, fleet overview, tool-call audit rows, escalations, deliverables, and Signal impact. A seat's completed-work area combines explicit deliverables, work-log evidence, and successful run summaries into one operator-facing trail with safe links labelled as internal, Linear, GitHub, or external. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalents are \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\` for the compact overview, and \`{{cli}} agent fleet-digest --json\` / \`agent.fleet_digest\` / \`rost_get_dogfood_fleet_health_digest\` for the daily dogfood evidence bundle. The digest returns live/idle state, 24h/7d turns, 7d/30d spend, recent failed runs, unresolved product errors, failed notifications, and a next action per seat. Shared system-health summaries use the same server-derived tenant, member, or seat-token scope so UI, CLI, and MCP operators see consistent stalled-work, unresolved-error, runner, and notification counts without client-supplied tenant boundaries. Fleet real-turn counts use the same seat-run association as \`agent.list_runs\`, filtered to real runs. Scheduled agents are checked in rounded five-minute buckets, so a minute-level cron inside the bucket queues one work order for that bucket rather than one order per minute. Sandbox dry runs do not count as real turns. If the agent is repeatedly blocked, revise the Charter or split the seat. If the agent is taking too much judgment, narrow its autonomous scope.`
42247
+ Review the first dry runs, fleet overview, tool-call audit rows, escalations, deliverables, and Signal impact. A seat's completed-work area combines explicit deliverables, work-log evidence, and successful run summaries into one operator-facing trail with safe links labelled as internal, Linear, GitHub, or external. The fleet view at \`/agents\` shows every staffed agent seat at a glance; the agent-native equivalents are \`{{cli}} command agent.list_fleet --json '{}'\` / \`rost_list_agent_fleet\` for the compact overview, and \`{{cli}} agent fleet-digest --json\` / \`agent.fleet_digest\` / \`rost_get_dogfood_fleet_health_digest\` for the daily dogfood evidence bundle. The digest returns live/idle state, 24h/7d turns, 7d/30d spend, recent failed runs, unresolved product errors, failed notifications, and a next action per seat.
42248
+
42249
+ For an operational audit, start with the \`/health\` dashboard or \`{{cli}} system health --json\` / \`system.health\` / \`rost_system_health\` before manually chaining fleet, run, Signal, Friction, task, integration, runner, and Sync commands. The dashboard, CLI, and MCP tool share the same command-backed system-health model, with server-derived tenant, member, requested-seat, or seat-token scope. Owners see tenant health; members see occupied-seat subtrees; seat-scoped tokens see their own seat plus authorized downstream seats, and optional \`seat_id\` narrowing can only reduce that server-derived scope. Seat pages link to \`/health?seat_id=<seat>\` for scoped follow-up. Every health finding includes a remediation action with a human label/link plus command id, schema reference, CLI command, help text, and human-gated marker for agents. Open Friction without an action task links to the Friction detail and gives agents the \`task.create\` then \`friction.link_task\` next step; the final issue resolution still requires the human \`friction.resolve\` decision.
42250
+
42251
+ Use the lower-level commands after health names a finding: \`agent.get_run\` for a specific failed run, \`signal.list\` for off-track readings, \`task.list\` for the owning seat's queue, \`integration.status\` or \`integration.test\` for connector evidence, \`runner.list\` / \`runner.diagnose\` for local-runner repair, and \`sync.brief.compile\` for missing Sync Briefs. Fleet real-turn counts use the same seat-run association as \`agent.list_runs\`, filtered to real runs. Scheduled agents are checked in rounded five-minute buckets, so a minute-level cron inside the bucket queues one work order for that bucket rather than one order per minute. Sandbox dry runs do not count as real turns. If the agent is repeatedly blocked, revise the Charter or split the seat. If the agent is taking too much judgment, narrow its autonomous scope.`
42243
42252
  },
42244
42253
  {
42245
42254
  slug: "tool-access-and-vault",
@@ -42384,7 +42393,7 @@ External connectors are being rolled out provider by provider, conservatively (r
42384
42393
  order: 48,
42385
42394
  title: "CLI and MCP installation guide",
42386
42395
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
42387
- version: "2026-06-21.15",
42396
+ version: "2026-06-27.1",
42388
42397
  public: true,
42389
42398
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42390
42399
  stages: ["company_setup", "staffing"],
@@ -43011,6 +43020,8 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
43011
43020
  | \`rost_update_sync_brief_scope\` | \`settings.sync_brief_scope.update\` | Set the tenant's Sync Brief scope (company_wide or per_cluster). | Tenant-admin | Owner-only; call with \`{"sync_brief_scope":"company_wide"}\` or \`{"sync_brief_scope":"per_cluster"}\`. |
43012
43021
  | \`rost_get_product_learning_policy\` | \`settings.product_learning.get\` | Read whether product/page/recommendation analytics are allowed. | Tenant | Call with \`{}\`; audit/security logs are always enabled. |
43013
43022
  | \`rost_update_product_learning_policy\` | \`settings.product_learning.update\` | Set product-learning mode. | Tenant-admin | Human-gated; call with \`{"mode":"enabled"}\`, \`{"mode":"disabled"}\`, or \`{"mode":"enterprise_contract"}\`. |
43023
+ | \`rost_get_company_autonomy_ceiling\` | \`settings.agent_policy.get\` | Read the company autonomy ceiling (Company Guardrails): profile, enforcement, and max_autonomous_risk. | Tenant | Call with \`{}\`; metadata only. |
43024
+ | \`rost_set_company_autonomy_ceiling\` | \`settings.agent_policy.update\` | Set the company autonomy ceiling. | Tenant-admin | Owner-only, human-gated; call with \`{"profile":"locked_down"}\` (or \`balanced\`/\`high_autonomy\`, or \`{"profile":"custom","max_autonomous_risk":"high"}\`). Enforced by default. |
43014
43025
  | \`rost_list_signals\` | \`signal.list\` | List measurables with their latest reading and on/off-track state. | Seat or tenant-admin | Call with \`{}\` to find measurable ids. |
43015
43026
  | \`rost_get_signal\` | \`signal.get\` | Read a measurable with its full reading history. | Seat or tenant-admin | Call with \`{"measurable_id":"<id>"}\`. |
43016
43027
  | \`rost_confirm_signal_reading\` | \`signal.confirm_reading\` | Confirm an unconfirmed reading as human-verified. | Seat or tenant-admin | Humans confirm; call with \`{"reading_id":"<id>"}\`. |
@@ -43741,7 +43752,7 @@ Resolving Friction should produce one of four outcomes: a decision, a task, a Ch
43741
43752
  order: 70,
43742
43753
  title: "Steward queue guide",
43743
43754
  summary: "How Stewards review escalations, approve agent boundaries, and keep agents accountable.",
43744
- version: "2026-06-20.1",
43755
+ version: "2026-06-27.1",
43745
43756
  public: true,
43746
43757
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43747
43758
  stages: ["staffing", "operating_rhythm"],
@@ -43780,6 +43791,10 @@ In the app, the evidence is shown as a legible card, not raw data: a proposed to
43780
43791
 
43781
43792
  When nothing is waiting, the Steward page still proves the governance loop. It shows which agent or hybrid seats the human stewards, how many escalations were raised or decided recently, and whether any are open. That empty state is an operating summary, not a dead end.
43782
43793
 
43794
+ ## How escalations reach you
43795
+
43796
+ An escalation reaches you the same way no matter how the agent raised it \u2014 in a chat or CLI session, or on its own scheduled cloud run. When the agent stops at a boundary it opens the queue item and sends a notification to the accountable human along the steward chain, preferring a connected Slack channel and falling back to email. If no human occupies the agent's seat, the chain walks up to the next Steward. Delivery is idempotent: a retried run never notifies you twice for the same escalation, and the notification carries only summarized, redacted evidence \u2014 never secret material.
43797
+
43783
43798
  ## Work the queue from CLI or MCP
43784
43799
 
43785
43800
  The Steward reads the queue from any surface but decides as a human.
@@ -43801,7 +43816,7 @@ Keep agent scope tight at first. Approve more autonomy only after evidence. Use
43801
43816
  order: 71,
43802
43817
  title: "Confirmations and human gates guide",
43803
43818
  summary: "How {{brand}} routes authority-changing work through human confirmation, and why agents never approve their own requests.",
43804
- version: "2026-06-20.2",
43819
+ version: "2026-06-27.2",
43805
43820
  public: true,
43806
43821
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43807
43822
  stages: ["graph_design", "charter_design", "staffing", "operating_rhythm"],
@@ -43836,6 +43851,8 @@ The \`dangerous\` confirmation **level** is rare and is not the same as the **ri
43836
43851
 
43837
43852
  A gated command does not mutate when an agent calls it. It returns a pending confirmation with the command id, a risk level, and an \`approveVia\` block containing a web URL and the exact \`{{cli}} command confirmation.approve --json ...\` line. The human approves through the web link or the CLI; the agent surfaces the link and stops. A logged-in human at an interactive CLI can run their own gated \`{{cli}} command <id>\` without copy-pasting the approval command because the CLI completes the returned confirmation inline.
43838
43853
 
43854
+ When an **agent** triggers a gate, {{brand}} also notifies the seat's steward (Slack with an email fallback) so the held action does not sit silent \u2014 a human is told a decision is waiting and given the approve link. A human pausing their own gated command does not self-notify. See the notifications guide.
43855
+
43839
43856
  \`\`\`bash
43840
43857
  # Human approves a pending confirmation
43841
43858
  {{cli}} command confirmation.approve --json '{"confirmation_id":"<confirmation-id>"}'
@@ -43843,6 +43860,10 @@ A gated command does not mutate when an agent calls it. It returns a pending con
43843
43860
  {{cli}} command confirmation.reject --json '{"confirmation_id":"<confirmation-id>"}'
43844
43861
  \`\`\`
43845
43862
 
43863
+ ## The approvals queue
43864
+
43865
+ The \`/approvals\` page is one place a human clears every pending decision across the company. It unions still-pending confirmations with open steward escalations into a single queue, each item shown with its risk, the source seat, and redacted arguments \u2014 secret material is never displayed. You see only items for seats you have authority over: an owner sees all of them; a member sees confirmations for the seats they occupy and escalations routed to their steward chain, and nothing else. Approve and reject route through the same \`confirmation.approve\` / \`confirmation.reject\` and escalation decision commands the CLI and per-seat surfaces use, so the audit trail and the agents-recommend-humans-decide rule are identical wherever you act.
43866
+
43846
43867
  ## The rule for agents
43847
43868
 
43848
43869
  An agent never approves or rejects its own request. \`decisions.decided_by\` is always a human. The steward decision commands (\`escalation.resolve\`, \`escalation.reject\`) are not even exposed over MCP. When an agent hits a gate, it prepares the evidence and the recommended action, returns the approve link, and waits for a human.
@@ -43856,11 +43877,11 @@ Stop before: approving a Charter, signing a manifest, connecting a tool or crede
43856
43877
  order: 72,
43857
43878
  title: "Settings guide",
43858
43879
  summary: "How to use Settings as the control plane for company access, channels, providers, tokens, and operating defaults.",
43859
- version: "2026-06-21.4",
43880
+ version: "2026-06-27.1",
43860
43881
  public: true,
43861
43882
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43862
43883
  stages: ["company_setup", "staffing"],
43863
- relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "tenant.rename", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.product_learning.get", "settings.product_learning.update"],
43884
+ relatedCommandIds: ["onboarding.create_invite", "mcp_token.create", "mcp_token.revoke", "mcp_token.list", "integration.list", "integration.readiness", "integration.status", "integration.test", "settings.get", "settings.update", "tenant.rename", "settings.sync_brief_scope.get", "settings.sync_brief_scope.update", "settings.product_learning.get", "settings.product_learning.update", "settings.agent_policy.get", "settings.agent_policy.update"],
43864
43885
  legal: { publicRisk: "low", notes: ["{{brand}}-native settings guidance."] },
43865
43886
  sources: [
43866
43887
  {
@@ -43913,7 +43934,13 @@ Product-learning participation controls whether {{brand}} may record product/pag
43913
43934
 
43914
43935
  Read the policy with \`settings.product_learning.get\` (CLI: \`{{cli}} settings product-learning get\`). Change it with \`settings.product_learning.update\` (CLI: \`{{cli}} settings product-learning update --mode disabled\`). Analytics ingestion code should call the shared product-learning policy helper instead of reading \`tenants.settings\` directly.
43915
43936
 
43916
- The product analytics foundation stores only bounded product telemetry: product events, page views by route template, command invocation metadata, onboarding milestones, and recommendation outcomes. Authenticated users can read analytics rows for their tenant, but writes are server-owned through the trusted DB helpers. The helpers and database constraints reject or redact obvious raw URLs, filesystem paths, secrets, prompt/content fields, command argument/output fields, direct contact/payment identifiers, and long prose-shaped values. These analytics rows are not audit records; operational logs and security evidence stay in their dedicated append-only or product-visible tables.
43937
+ The product analytics foundation stores only bounded product telemetry: product events, page views by route template, command invocation metadata, onboarding milestones, and recommendation outcomes. Recommendation outcomes use bounded statuses such as \`shown\`, \`accepted\`, \`edited\`, \`rejected\`, \`dismissed\`, and \`reversed\`; current instrumented paths include model-tier recommendations from \`agent.create_custom\` and Charter seat-type recommendations from the Charter lifecycle. These rows store safe enums/categories and fingerprints, not raw responsibility answers, Charter prose, prompt text, tool arguments, or customer content. Authenticated users can read analytics rows for their tenant, but writes are server-owned through the trusted DB helpers. The helpers and database constraints reject or redact obvious raw URLs, filesystem paths, secrets, prompt/content fields, command argument/output fields, direct contact/payment identifiers, and long prose-shaped values. These analytics rows are not audit records; operational logs and security evidence stay in their dedicated append-only or product-visible tables.
43938
+
43939
+ The authenticated web app records first-party page views and product events through route templates, not raw full URLs or query strings. The ingestion route resolves tenant and user server-side, caps client batches, validates enriched payloads with the shared protocol schemas, and treats product-learning opt-out as a skipped analytics write rather than a product error.
43940
+
43941
+ Onboarding milestones are recorded from durable server-side transitions such as company setup, graph review, first Charter draft, first agent setup/dry run/pass/live, first Signal, first goal, Sync rhythm start, and onboarding finish. They are idempotent per tenant and milestone: repeated UI, CLI, MCP, or system calls keep the earliest product-learning timestamp instead of creating duplicate funnel steps. The append-only event log remains the audit timeline; onboarding milestone rows are a bounded analytics projection and are skipped when product learning is disabled.
43942
+
43943
+ Command invocation analytics are emitted from the central command executor for UI, CLI, and MCP calls. They store command id, source, actor/scope kind, outcome class, duration, confirmation flag, guard result, request id when UUID-shaped, safe error code, and bounded changed ids. They do not store raw command arguments or outputs. The command outcome classes are \`ok\`, \`denied\`, \`pending_confirmation\`, \`validation_error\`, \`precondition_error\`, \`authorization_error\`, and \`internal_error\`. Product analytics write failures are ignored so they cannot mask the command result or replace audit/security records.
43917
43944
 
43918
43945
  ## Inference budget
43919
43946
 
@@ -43923,6 +43950,16 @@ Agents that run on {{brand}}-managed inference draw against a tenant inference b
43923
43950
  - The sandbox dry run is free and is never blocked by the cap, so a fresh company can charter, dry-run, and take an agent live before setting a budget. The cap applies only to real managed-inference runs.
43924
43951
  - A company that brings its own provider key (BYOK) is metered on that key and is not subject to the {{brand}}-managed hard cap. BYOK changes the provider account used for eligible cloud calls, not the Charter, tool guard, human gate, or data-retention posture; see the ai-model-data-handling-guide before making provider-handling claims.
43925
43952
 
43953
+ ## Company autonomy ceiling (Company Guardrails)
43954
+
43955
+ The company autonomy ceiling is a single tenant-wide dial that caps how much ANY agent may do **without a human in the loop**. It is the fourth governance gate, after the signed manifest, the budget, and before escalation \u2014 it never replaces them. It only ever constrains AUTONOMOUS (always_allow) actions; a tool already routed to a human (always_ask), an explicit escalation, a connector that already escalated, or secret-shaped input is never blocked by the ceiling.
43956
+
43957
+ - Read it with \`settings.agent_policy.get\` (CLI: \`{{cli}} settings agent-policy get\`).
43958
+ - Set it with \`settings.agent_policy.update\` (CLI: \`{{cli}} settings agent-policy set --profile locked_down\`). Owner-only and human-gated.
43959
+ - Profiles are named ceilings: \`locked_down\` (agents autonomously read/draft only; every write/send escalates), \`balanced\` (the default; read/draft autonomous, writes escalate), \`high_autonomy\` (approval-marked write tools may run autonomously; only full-access escalates), and \`custom\` + \`max_autonomous_risk\` (\`low\`, \`medium\`, \`high\`, \`critical\`).
43960
+ - An explicitly set ceiling is ENFORCED by default. Enforcement has two modes: \`enforce\` blocks an over-ceiling autonomous call and routes it to the steward (it is never a dead-end deny \u2014 a human can still approve), and \`observe\` allows the call but logs it. The platform default for a company that never set a policy is balanced + observe, so existing live agents are never retro-bricked.
43961
+ - When enforcement is on, signing a manifest or taking an agent live is REFUSED if the manifest grants always_allow to a tool whose risk exceeds the ceiling; the error names the exact ceiling, tool, and risk in its \`details\`. Lower that tool to always_ask, or raise the ceiling, then retry.
43962
+
43926
43963
  ## Agent guidance
43927
43964
 
43928
43965
  Agents may explain which setting is needed and why. They should not ask users to paste secrets into chat or tool arguments. When credentials are required, route the user to the vault-backed setup flow.`
@@ -43966,7 +44003,7 @@ When a user asks to add a person, clarify whether they mean app access, seat occ
43966
44003
  order: 74,
43967
44004
  title: "Notifications guide",
43968
44005
  summary: "How {{brand}} should notify humans about decisions, escalations, stale work, and agent boundaries.",
43969
- version: "2026-06-19.1",
44006
+ version: "2026-06-27.1",
43970
44007
  public: true,
43971
44008
  audiences: ["human", "cli", "mcp", "in_app_agent"],
43972
44009
  stages: ["operating_rhythm"],
@@ -43987,6 +44024,7 @@ Notifications should move decisions to the right human without turning {{brand}}
43987
44024
 
43988
44025
  - An agent hits a must-escalate condition.
43989
44026
  - A tool or credential approval is needed.
44027
+ - An agent holds a durable command behind a pending confirmation \u2014 the seat's steward is notified so the held action does not sit silent. A human pausing their own gated command does not self-notify.
43990
44028
  - A Signal is broken or stale.
43991
44029
  - A Friction item needs a decision.
43992
44030
  - A Sync decision creates a handoff.
@@ -44244,7 +44282,7 @@ Name the failing surface, collect evidence, recommend the smallest correction, a
44244
44282
  order: 78,
44245
44283
  title: "AI model data handling guide",
44246
44284
  summary: "How {{brand}} cloud agents, local MCP sessions, runners, BYOK, and connected tools handle model-bound data.",
44247
- version: "2026-06-21.4",
44285
+ version: "2026-06-22.1",
44248
44286
  public: true,
44249
44287
  audiences: ["human", "cli", "mcp", "in_app_agent"],
44250
44288
  stages: ["company_setup", "staffing", "operating_rhythm"],
@@ -44269,27 +44307,27 @@ Name the failing surface, collect evidence, recommend the smallest correction, a
44269
44307
  {
44270
44308
  label: "OpenAI API data controls",
44271
44309
  url: "https://developers.openai.com/api/docs/guides/your-data",
44272
- note: "Official API data-use and retention controls verified 2026-06-21."
44310
+ note: "Official API data-use and retention controls verified 2026-06-22."
44273
44311
  },
44274
44312
  {
44275
44313
  label: "OpenAI enterprise privacy",
44276
44314
  url: "https://openai.com/enterprise-privacy/",
44277
- note: "Official enterprise privacy and API retention summary verified 2026-06-21."
44315
+ note: "Official enterprise privacy and API retention summary verified 2026-06-22."
44278
44316
  },
44279
44317
  {
44280
44318
  label: "OpenAI Codex with ChatGPT plan",
44281
44319
  url: "https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan",
44282
- note: "Official Codex plan data-control scope verified 2026-06-21."
44320
+ note: "Official Codex plan data-control scope verified 2026-06-22."
44283
44321
  },
44284
44322
  {
44285
44323
  label: "Anthropic API and data retention",
44286
44324
  url: "https://platform.claude.com/docs/en/manage-claude/api-and-data-retention",
44287
- note: "Official Claude API ZDR, HIPAA, and retention scope verified 2026-06-21."
44325
+ note: "Official Claude API ZDR, HIPAA, and retention scope verified 2026-06-22."
44288
44326
  },
44289
44327
  {
44290
44328
  label: "Claude Code data usage",
44291
44329
  url: "https://code.claude.com/docs/en/data-usage",
44292
- note: "Official local Claude Code data-flow, training, and retention summary verified 2026-06-21."
44330
+ note: "Official local Claude Code data-flow, training, and retention summary verified 2026-06-22."
44293
44331
  },
44294
44332
  {
44295
44333
  label: "Reference corpus and docs spec",
@@ -44392,15 +44430,15 @@ If sensitive data appears by accident, stop, do not repeat it, and route cleanup
44392
44430
 
44393
44431
  ## Provider policy checkpoints
44394
44432
 
44395
- For platform-managed \`cloud\` runs and BYOK Anthropic \`cloud\` runs, check the Anthropic account, workspace, model, and contract. As of 2026-06-21, official Anthropic Claude API documentation says retained API data is not used for model training without express permission, that some API features are ZDR-eligible while others are not, and that ZDR, HIPAA readiness, model-specific retention requirements, consumer products, Claude Code, and third-party integrations each have their own scope.
44433
+ For platform-managed \`cloud\` runs and BYOK Anthropic \`cloud\` runs, check the Anthropic account, workspace, model, and contract. As of 2026-06-22, official Anthropic Claude API documentation says retained API data is not used for model training without express permission, that some API features are ZDR-eligible while others are not, and that ZDR, HIPAA readiness, model-specific retention requirements, consumer products, Claude Code, and third-party integrations each have their own scope.
44396
44434
 
44397
- For local OpenAI API-key clients running through \`mcp_session\` or \`runner\`, check the customer's OpenAI organization, project, endpoint, and API data controls. As of 2026-06-21, official OpenAI API documentation says API data is not used to train or improve OpenAI models unless the customer explicitly opts in, and default abuse-monitoring logs may retain customer content for up to 30 days unless approved controls apply. OpenAI says zero data retention is available only for eligible customers, endpoints, and use cases.
44435
+ For local OpenAI API-key clients running through \`mcp_session\` or \`runner\`, check the customer's OpenAI organization, project, endpoint, and API data controls. As of 2026-06-22, official OpenAI API documentation says API data is not used to train or improve OpenAI models unless the customer explicitly opts in, and default abuse-monitoring logs may retain customer content for up to 30 days unless approved controls apply. OpenAI says zero data retention is available only for eligible customers, endpoints, and use cases.
44398
44436
 
44399
44437
  For Codex specifically, first identify whether the operator is using Codex through a ChatGPT Free/Plus/Pro, Business, Enterprise, Edu, API, or other workspace path. Official OpenAI Codex help says ChatGPT training data controls apply to whether content processed through Codex may be used to improve OpenAI models when Codex is used with a ChatGPT plan, and that Pro and Plus conversations may be used unless training is disabled. Do not give a Codex user the OpenAI API answer unless they are actually using an API-governed Codex path.
44400
44438
 
44401
44439
  For local Claude Code clients running through \`mcp_session\` or \`runner\`, check whether the customer is using a consumer, team, enterprise, API, or third-party-platform path. Official Claude Code documentation separately describes consumer versus commercial handling, local transcript storage, telemetry, feedback, and provider-specific defaults.
44402
44440
 
44403
- Use those statements only as current provider-doc summaries. Do not convert them into a blanket {{brand}} claim. The correct customer-facing answer is: "Here is the lane, here is what {{brand}} sends, here is which provider account or local client handles it, and here is what to verify in that account before treating the workflow as no-training, zero-retention, HIPAA-ready, or region-bound."
44441
+ Use those statements only as current provider-doc summaries. Do not convert them into a blanket {{brand}} claim. The correct customer-facing answer is: "Here is the lane, here is what {{brand}} sends, here is which provider account or local client handles it, and here is what to verify in that account before treating the workflow as no-training, zero-retention, HIPAA-ready, or region-bound." If a customer or prospect asks for a DPA, BAA, SOC 2 report, regional processing commitment, customer-managed retention window, staff-access approval workflow, or customer-visible staff-access log, escalate instead of answering from this guide.
44404
44442
 
44405
44443
  ## Agent response checklist
44406
44444
 
@@ -44410,7 +44448,8 @@ When asked about AI data handling:
44410
44448
  2. Name the specific data classes that can enter the prompt or tool result.
44411
44449
  3. Name whether the provider path is platform-managed, tenant BYOK Anthropic, local client/account, or runner-controlled.
44412
44450
  4. Warn if the answer depends on provider settings, contract terms, ZDR approval, HIPAA readiness, model choice, endpoint, or third-party tool policy.
44413
- 5. Recommend the smallest safe next step: narrow the tool scope, use a vault ref, redact the input, switch to the approved provider account, or escalate for human/legal review.`
44451
+ 5. Escalate contractual, compliance, regional-processing, customer-managed retention, or staff-access-commitment questions instead of answering from this guide.
44452
+ 6. Recommend the smallest safe next step: narrow the tool scope, use a vault ref, redact the input, switch to the approved provider account, or escalate for human/legal review.`
44414
44453
  },
44415
44454
  {
44416
44455
  slug: "security-model-guide",
@@ -46599,6 +46638,30 @@ var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
46599
46638
  });
46600
46639
  }
46601
46640
  }, settingsUsage(ctx.binName)),
46641
+ "agent-policy": (ctx, rest) => dispatch(ctx, "settings agent-policy", rest, {
46642
+ get: (innerCtx, innerRest) => {
46643
+ const parsed = parseFlags(innerRest);
46644
+ return execute(innerCtx, parsed, "settings.agent_policy.get", {}, (output) => {
46645
+ const policy = asRecord(asRecord(output).agent_policy);
46646
+ return `agent_policy profile=${field(policy, "profile")} enforcement=${field(policy, "enforcement")} max_autonomous_risk=${field(policy, "max_autonomous_risk")} explicit=${field(policy, "explicit")}`;
46647
+ });
46648
+ },
46649
+ set: (innerCtx, innerRest) => {
46650
+ const parsed = parseFlags(innerRest);
46651
+ const profile = optionalValue(parsed, "profile");
46652
+ if (profile !== "locked_down" && profile !== "balanced" && profile !== "high_autonomy" && profile !== "custom") {
46653
+ throw new UsageError("Provide --profile locked_down|balanced|high_autonomy|custom.");
46654
+ }
46655
+ const body = withOptional({ profile }, {
46656
+ max_autonomous_risk: optionalValue(parsed, "max-autonomous-risk"),
46657
+ enforcement: optionalValue(parsed, "enforcement")
46658
+ });
46659
+ return execute(innerCtx, parsed, "settings.agent_policy.update", body, (output) => {
46660
+ const policy = asRecord(asRecord(output).agent_policy);
46661
+ return `Set company autonomy ceiling to ${field(policy, "profile")} (max_autonomous_risk=${field(policy, "max_autonomous_risk")}, enforcement=${field(policy, "enforcement")}).`;
46662
+ });
46663
+ }
46664
+ }, settingsUsage(ctx.binName)),
46602
46665
  get: (ctx, rest) => {
46603
46666
  const parsed = parseFlags(rest);
46604
46667
  return execute(ctx, parsed, "settings.get", {}, (output) => {
@@ -46635,11 +46698,13 @@ var settingsWrapper = (context, args) => dispatch(context, "settings", args, {
46635
46698
  }
46636
46699
  }, settingsUsage(context.binName));
46637
46700
  function settingsUsage(bin) {
46638
- return `Usage: ${bin} settings get|update|product-learning|rename [--json]
46701
+ return `Usage: ${bin} settings get|update|product-learning|agent-policy|rename [--json]
46639
46702
  ${bin} settings get
46640
46703
  ${bin} settings update [--soft-cap-usd <n>] [--hard-cap-usd <n>]
46641
46704
  ${bin} settings product-learning get
46642
46705
  ${bin} settings product-learning update --mode enabled|disabled|enterprise_contract
46706
+ ${bin} settings agent-policy get
46707
+ ${bin} settings agent-policy set --profile locked_down|balanced|high_autonomy|custom [--max-autonomous-risk low|medium|high|critical] [--enforcement enforce|observe]
46643
46708
  ${bin} settings rename --company <name>`;
46644
46709
  }
46645
46710
  var memberWrapper = (context, args) => dispatch(context, "member", args, {
@@ -47366,7 +47431,10 @@ function formatSystemHealth(output) {
47366
47431
  lines.push("top_actions:");
47367
47432
  for (const action of actions) {
47368
47433
  const item = asRecord(action);
47369
- lines.push(` ${field(item, "label")} command=${field(item, "command_id")} cli=${field(item, "cli")}`);
47434
+ lines.push(` ${field(item, "label")} command=${field(item, "command_id")} schema=${field(item, "schema_ref")} cli=${field(item, "cli")}`);
47435
+ if (field(item, "help") !== "\u2014") {
47436
+ lines.push(` ${field(item, "help")}`);
47437
+ }
47370
47438
  }
47371
47439
  }
47372
47440
  const fleet = asRecord(sections.fleet);