Repository navigation
feat(framework): redact again on the upload path #655
Description
Activity
- added a parent issue
on Aug 14, 2026 Re-scoped, 2026-08-15
Ingest-time redaction moved to #647, which owns the sink and is where the separation physically happens. Keeping the allowlist here created a loop: #647 could not satisfy its own criterion without a definition this issue held.
This issue is now the upload path only — a different boundary, and a stricter one. What may sit on a developer's own disk is not what may leave their machine, and the two lists should be allowed to differ. Applying the ingest list by default and requiring an explicit widening for upload is the shape to aim for.
- changed the title
[-]feat(framework): redact tool inputs before anything is stored[/-][+]feat(framework): redact again on the upload path[/+]on Aug 15, 2026 Premise stale
Found by a backlog audit on 2026-08-28. This issue argues from "per-step cost requires
OTEL_LOG_TOOL_DETAILS=1". That is no longer how per-step cost is obtained —cli/src/domain/tools/ai/claude-telemetry.ts:59states it plainly: "Per-step cost comes from the run journal, not from this export."The ingest allowlist this issue scopes also already ships (
telemetry-sink-record.ts:133, fifteen fields, withuser.id,promptandresponsedeliberately excluded).Worth re-reading before any work starts here: what remains may be nothing, and the body no longer says.
Closing — it redacts a path that no longer exists
This issue asks for redaction on the upload path. There is no upload path. The OTLP export route was deleted: nothing in the system opens a port or writes a destination into a tool's settings, and
grep -rn "OTEL_LOG_TOOL_DETAILS|skill_activated"overcli/src,plugins,docsandaidd_docsreturns nothing — the attributes it argues about are not produced anywhere.Storage-side redaction, the half that was real, already holds. The record contract in
aidd_docs/product/metrics-contract.mdis a closed allowlist, verified against every stored record on the machine that built this: 20 flat scalar keys, no prompt, no code, no diff.The remaining clause — the same filter applied before anything leaves — moves to #662, which is where sending is now designed. It is not lost; it becomes a condition of the thing that will actually send, rather than a separate issue about a path that was removed.
Closed rather than rewritten: an issue whose subject was deleted is not a smaller version of itself.
- added a commit that references this issue
on Aug 31, 2026
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Projects
- StatusShow more project fieldsDone
Outcome
Per-step attribution is available without any prompt, command or tool input leaving the machine.
Scope
This exists because of a measured trade with no upstream setting to resolve it.
Per-step cost requires
OTEL_LOG_TOOL_DETAILS=1, which is what makesskill_activatedcarry the real skill name instead of a placeholder. That flag is not selective: it also logs Bash commands, MCP tool names and tool inputs. There is no vendor option that separates the skill name from the rest.Dropping those attributes before anything is stored is therefore the only place the separation can occur.
Done When
Relations