@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 +89 -21
- package/dist/index.js.map +2 -2
- package/dist/operations.d.ts.map +1 -1
- package/package.json +1 -1
- package/prompts/how-tos/human-confirmations.md +1 -0
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-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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);
|