Skip to content

[NA] [DOCS] docs: address Cost Intelligence docs review feedback - #7920

Draft
jverre wants to merge 1 commit into
mainfrom
jacques/NA-cost-intelligence-docs-review-fixes
Draft

[NA] [DOCS] docs: address Cost Intelligence docs review feedback#7920
jverre wants to merge 1 commit into
mainfrom
jacques/NA-cost-intelligence-docs-review-fixes

Conversation

@jverre

@jverre jverre commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Details

Follow-up to #7904 (merged), addressing the review comments left on it. Prose-only accuracy fixes across the Cost Intelligence docs:

  • Reduce coding agent spend: the pilot stage no longer promises group-scoped policy — scoping comes from where Cost Intelligence is installed; the validation corpus is identified as internal usage plus customers who explicitly opt in.
  • Roll out cost policies: the skills/MCP note now distinguishes the two — a disabled skill re-enables when called by name, while a denied MCP server stays off until the policy changes.
  • macOS app + install overview: "the agent is untouched" corrected — the app sets up certificate trust in the agent; comparison rows updated on both pages.
  • Overview: the "How it works" flow is scoped to Claude Code on the plugin path, with a pointer to Installation for other agents.
  • MDM page: the macOS app card dropped the stale "when no client configuration can be delivered" framing.

Review comments on the SVG diagrams were intentionally not addressed (graphics excluded from this pass).

Change checklist

  • User facing
  • Documentation update

Issues

  • NA

AI-WATERMARK

AI-WATERMARK: yes

  • If yes:
    • Tools: Claude Code
    • Model(s): Claude Fable 5
    • Scope: full implementation (docs prose)
    • Human verification: fixes directed by review comments; content reviewed by author

Testing

  • Prose-only changes to six existing MDX pages; no routing, code, or component changes. The Fern preview build on the PR verifies rendering and links.

Documentation

  • apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/overview.mdx
  • apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/reduce-agent-spend.mdx
  • apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/roll-out-cost-policies.mdx
  • apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/install/overview.mdx
  • apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/install/macos-app.mdx
  • apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/install/mdm.mdx

🤖 Generated with Claude Code

- Pilot stage: scoping comes from install footprint, not group-scoped policy
- Validation corpus: internal usage and opted-in customers only
- Denied MCP servers stay off; only skills re-enable by name
- macOS app touches agent certificate trust; drop 'agent untouched'
- Scope the overview flow to Claude Code on the plugin path
- Update the stale fallback framing on the MDM page's macOS app card

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⏱️ pre-commit per-hook timing

No linted files changed — nothing to run.

⏭️ 43 skipped (no matching files changed)
Hook Description Result
🐍 trim trailing whitespace — python sdk Strip trailing whitespace ⏭️
🐍 fix end of files — python sdk Ensure files end in a newline ⏭️
🐍 ruff — python sdk Lint + autofix Python (ruff) ⏭️
🐍 ruff-format — python sdk Format Python code (ruff) ⏭️
🐍 mypy — python sdk Static type check ⏭️
🤖 trim trailing whitespace — optimizer Strip trailing whitespace ⏭️
🤖 fix end of files — optimizer Ensure files end in a newline ⏭️
🤖 check yaml — optimizer Validate YAML syntax ⏭️
🤖 check json — optimizer Validate JSON syntax ⏭️
🤖 check toml — optimizer Validate TOML syntax ⏭️
🤖 check for added large files — optimizer Block large files (>1MB) ⏭️
🔐 detect private key — optimizer Block committed private keys ⏭️
🤖 check for merge conflicts — optimizer Block merge-conflict markers ⏭️
🤖 check for case conflicts — optimizer Block case-only name clashes ⏭️
🤖 pyupgrade — optimizer Modernize Python syntax ⏭️
🤖 ruff — optimizer Lint + autofix Python (ruff) ⏭️
🤖 ruff-format — optimizer Format Python code (ruff) ⏭️
🤖 mypy — optimizer Static type check ⏭️
📓 nbstripout — optimizer notebooks Strip notebook output ⏭️
📝 markdownlint — optimizer Lint Markdown ⏭️
🔤 codespell — optimizer Fix common misspellings ⏭️
📊 radon cc — optimizer Cyclomatic-complexity gate ⏭️
📊 radon raw — optimizer Raw size metrics gate ⏭️
📊 xenon — optimizer Fail on complexity thresholds ⏭️
📊 lizard — optimizer Cyclomatic-complexity gate ⏭️
🧹 vulture — optimizer Find dead code ⏭️
🛡️ trim trailing whitespace — guardrails Strip trailing whitespace ⏭️
🛡️ fix end of files — guardrails Ensure files end in a newline ⏭️
🛡️ ruff — guardrails Lint + autofix Python (ruff) ⏭️
🛡️ ruff-format — guardrails Format Python code (ruff) ⏭️
🛡️ mypy — guardrails Static type check ⏭️
⚓ helm-docs Regenerate Helm chart README ⏭️
block non-public FE plugins Block non-public FE plugins ⏭️
☕ spotless — java backend Format Java code ⏭️
🧪 pre-commit wrapper smoke tests Self-test the wrapper scripts ⏭️
🧪 rebaseline script tests Self-test the changelog re-baseline script ⏭️
🌐 eslint — frontend Lint + autofix JS/TS ⏭️
🌐 typecheck — frontend Whole-project tsc type check ⏭️
📘 eslint — typescript sdk Lint + autofix JS/TS ⏭️
📘 typecheck — typescript sdk Whole-project tsc type check ⏭️
⚙️ actionlint — github workflows Lint GitHub Actions workflows ⏭️
🐳 hadolint — dockerfiles Lint Dockerfiles ⏭️
🌈 zizmor — github workflows security Security-scan GitHub Actions workflows ⏭️

@github-actions

Copy link
Copy Markdown
Contributor

🌿 Preview your docs: https://opik-preview-01a01ad0-6d4c-7155-ac2b-b3397f7cc928.docs.buildwithfern.com/docs/opik

No broken links found

Unverified links (timeout / rate-limited / server error — not failing the check)

https://aistudio.google.com/apikey (401)
↳ on page: /docs/opik/administration/workspace-settings/ai_providers
https://console.cloud.google.com/iam-admin/iam (401)
↳ on page: /docs/opik/administration/workspace-settings/ai_providers
https://console.cloud.google.com/iam-admin/roles (401)
↳ on page: /docs/opik/administration/workspace-settings/ai_providers
https://console.cloud.google.com/iam-admin/serviceaccounts (401)
↳ on page: /docs/opik/administration/workspace-settings/ai_providers
https://console.mistral.ai/api-keys/ (timeout)
↳ on page: /docs/opik/integrations/mistral
https://console.x.ai/ (403)
↳ on page: /docs/opik/integrations/xai-grok
https://docs.predibase.com/integrations/comet (403)
↳ on page: /docs/opik/integrations/predibase
https://portal.azure.com/ (403)
↳ on page: /docs/opik/administration/workspace-settings/ai_providers
https://x.ai/ (403)
↳ on page: /docs/opik/integrations/xai-grok


📌 Results for commit 8803d16

## How it works

Each developer machine runs its own local `opik-cipx` daemon. The coding agent talks to it over the loopback interface, and the daemon forwards every call to the provider unchanged — there is no shared collector, and none of your traffic routes through Comet. What ships to your Opik workspace is a separate, asynchronous stream of metadata-only spans: token counts, costs, and structure, [never content](/cost-intelligence/data-privacy-security).
Each developer machine runs its own local `opik-cipx` daemon. The coding agent talks to it over the loopback interface, and the daemon forwards every call to the provider unchanged — there is no shared collector, and none of your traffic routes through Comet. What ships to your Opik workspace is a separate, asynchronous stream of metadata-only spans: token counts, costs, and structure, [never content](/cost-intelligence/data-privacy-security). The diagram shows Claude Code on the plugin path, the most common setup; see [Installation](/cost-intelligence/install/overview) for the other agents and rollout paths.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supported agents lack valid setup paths

The supported-agent pointer sends Codex and Cursor users to Installation, which documents only the Claude Code plugin flow, so they may apply the wrong setup — should we link distinct Codex/Cursor instructions or narrow the supported-agent claim until those paths are documented?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/overview.mdx around
lines 25-25, revise the “How it works” installation pointer so it does not send
Codex and Cursor users to Claude Code-only instructions. Link to distinct Codex and
Cursor Cost Intelligence setup guides, including their metadata/export configuration, or
narrow the supported-agent wording at lines 81-85 until those guides exist; preserve the
Claude Code installation link for Claude users.

href="/cost-intelligence/install/macos-app"
>
Transparent capture when no client configuration can be delivered.
Transparent capture of every user, including the Claude Code desktop app.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MDM capture coverage is overstated

The card promises “every user,” but capture is limited to users on targeted Macs with ~/.opik-cipx/config.toml, so non-targeted or non-Mac users and unprovisioned shared-device accounts remain uncaptured — should we qualify it as “every user on each targeted Mac” or document a supported system-wide credential path?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/install/mdm.mdx`
around lines 177-177, revise the MDM card description for macOS capture because “every
user” incorrectly implies coverage across all users and platforms. Qualify it to state
that it covers users on each targeted Mac who have the required per-user
`~/.opik-cipx/config.toml` configuration, unless a supported system-wide credential path
is documented.

Comment on lines 31 to +35
**Disabling a skill doesn't take it away.** The most common recommendation —
turning off unused skills and MCP servers — only keeps them out of the
turning off unused skills and MCP servers — removes their weight from the
context that ships with every request. Nothing is uninstalled, and a disabled
skill stays callable: when a developer asks for it by name, Claude Code
re-enables it and uses it. The saving comes from the thousands of requests
that never needed it, not from taking capability away.
re-enables it and uses it. A denied MCP server does stay off until the policy

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disabled skills remain unusable

The note claims that skillOverrides: "off" re-enables a policy-disabled skill when invoked by name, but Claude Code’s skillOverrides: {"name": "off"} behavior hides it and returns a skillOverrides error. disable-model-invocation: true is a separate control that still allows /skill-name; should we document these semantics accurately, retain the deniedMcpServers distinction, or change the implementation if reactivation is intended?

Severity web_search

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/roll-out-cost-policies.mdx
around lines 31-35, update the Note to remove the claim that Claude Code re-enables
policy-disabled skills when invoked by name. Document that skillOverrides set to off
hides the skill and causes full-name invocation to return a skillOverrides error, and
distinguish this from disable-model-invocation: true, which prevents automatic loading
but still permits explicit user invocation. Keep the separate statement that denied MCP
servers remain blocked until policy changes.


1. **Observe first.** Roll out to a pilot group and collect data only — no policies yet. You learn where the money goes before anything changes.
2. **Apply to the pilot.** Review the recommendations priced from the pilot's own traffic and apply the ones you approve, to that group only.
2. **Apply to the pilot.** Review the recommendations priced from the pilot's own traffic and apply the ones you approve. Policies only reach machines where Cost Intelligence is installed, so while only the pilot is rolled out, the changes land on the pilot's machines alone.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pilot policy reaches non-pilot users

The pilot is described as applying only to pilot machines, but shared-device MDM settings reach every signed-in user, so users outside the pilot are included and pilot-priced recommendations are not pilot-specific — should we state the device scope and shared-machine impact explicitly, or define it as device-targeted?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/reduce-agent-spend.mdx
around line 25, revise the “Apply to the pilot” rollout step to accurately describe
device-level policy scope. State that policies apply to every user who signs in on a
targeted machine, warn that shared pilot devices can affect users outside the pilot, and
frame the pilot as device-targeted rather than implying recommendations or effects are
limited to pilot users.

**Against benchmarks.** We evaluate agent performance on open and private benchmarks — TerminalBench among them — before and after each change, so a method that degrades what the agent can do never becomes a recommendation.

**Against real sessions.** We maintain a body of tens of thousands of real, labeled coding-agent sessions that are replayable inside Opik. Every method is tuned against it offline, in large experiments, and monitored online with LLM-as-a-judge evaluation of real outcomes. As agents and usage patterns evolve, the same loop keeps the recommendations current.
**Against real sessions.** We maintain a body of tens of thousands of real, labeled coding-agent sessions — drawn from our own internal usage and from customers who explicitly opt in — that are replayable inside Opik. Every method is tuned against it offline, in large experiments, and monitored online with LLM-as-a-judge evaluation of real outcomes. As agents and usage patterns evolve, the same loop keeps the recommendations current.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Customer session privacy boundaries undocumented

The new claim promises opted-in, replayable, outcome-judged customer sessions, but the docs cover only CIPX_CAPTURE_CONTENT while the visible ingestion path is metadata-only and documents no consent or access, retention, or deletion lifecycle, so readers may infer an approved reuse flow that cannot replay or evaluate sessions without exposing prompt, response, tool, and repository content. Should we qualify this as an internal/unshipped process or document consent, workspace segregation, evaluator access, retention, revocation, and the captured fields and protections?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`apps/opik-documentation/documentation/fern/docs-v2/cost_intelligence/reduce-agent-spend.mdx`
around lines 91-91, revise the “Against real sessions” paragraph so it does not
present customer-session replay, content capture, or LLM judging as an established
customer-facing capability. Qualify the corpus as an internal or unshipped process that
does not use customer content, or explicitly document the required opt-in/consent
lifecycle, workspace isolation, captured fields, evaluator access, retention, deletion,
and revocation controls before making these claims.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

baz: pending documentation Improvements or additions to documentation 🟢 size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant