Skip to content

feat: split OMIT_IO into OMIT_PROMPTS and OMIT_TOOL_IO#111

Open
k-berger wants to merge 2 commits into
mainfrom
split-omit-io-into-prompts-and-tool-io
Open

feat: split OMIT_IO into OMIT_PROMPTS and OMIT_TOOL_IO#111
k-berger wants to merge 2 commits into
mainfrom
split-omit-io-into-prompts-and-tool-io

Conversation

@k-berger

Copy link
Copy Markdown

Summary

  • Splits the single OMIT_IO privacy flag into two independent flags: OMIT_PROMPTS (gates user prompts + assistant responses) and OMIT_TOOL_IO (gates tool call inputs + responses). Both default to true, matching the previous OMIT_IO=true default — so out-of-the-box behavior is unchanged.
  • Enables the previously-impossible combination: collect tool call arguments and responses while still redacting prompts (OMIT_PROMPTS=true, OMIT_TOOL_IO=false), or the reverse.
  • Hard break — OMIT_IO is removed entirely, no alias. Users who explicitly set OMIT_IO=false to enable collection will need to migrate to the new flags; users on defaults are unaffected.

Implementation: contentKeys map in internal/otlp/otlp.go splits into promptContentKeys + toolContentKeys, and the redaction branch in eventAttributes becomes (cfg.OmitPrompts && promptContentKeys[k]) || (cfg.OmitToolIO && toolContentKeys[k]). Wired through Config, cmd/on-event/main.go, the userConfig declarations in plugin.json, the YAML frontmatter parser in scripts/on-event.sh, and DASH0_* env var fallbacks. README updated across the privacy defaults table, configuration tables, env var table, config file examples, and attribute footnotes.

Test plan

  • go build ./... clean
  • go test ./... — all packages pass (unit + integration)
  • Tests updated: split TestSendLogOmitIO into three sub-tests (both flags, prompts-only, tool-IO-only); split tool/LLM span tests in trace_test.go to verify each flag is wired to the right span type; renamed *SurvivesOmitIO extraction tests to *SurvivesOmitToolIO and switched their env var
  • e2e test env updated to set both CLAUDE_PLUGIN_OPTION_OMIT_PROMPTS=false and CLAUDE_PLUGIN_OPTION_OMIT_TOOL_IO=false
  • Manual: install plugin, set OMIT_PROMPTS=true + OMIT_TOOL_IO=false, confirm only tool I/O reaches Dash0
  • Release notes flag the breaking rename for anyone who was using OMIT_IO=false

k-berger and others added 2 commits June 10, 2026 11:04
Allows independently opting in/out of prompt content vs tool call I/O
collection. Both default to true, preserving the previous OMIT_IO=true
default. The old OMIT_IO option is removed (hard break).
@k-berger k-berger requested a review from GuyMoses June 10, 2026 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant