Replies: 1 comment
|
Support this direction. I audited current Decision 3 — masked-value read surfaces. Four fields currently round-trip a mask sentinel:
Two sentinel constants coexist for the same fact ( Decision 4 — agreed, no survivors. One concrete false positive to add to the evidence: the backend redactor's Worth noting for the deletion plan: (Drafted with AI assistance; I verified every claim against 简体中文支持这个方向。我基于当前 Decision 3 —— masked-value 读取面。 目前有四个字段在读取时往返 mask sentinel:
同一个事实并存着两个 sentinel 常量( Decision 4 —— 同意,一个都不留。 补充一个具体的误报证据:后端 redactor 的 对删除计划还有一点值得说明: (本评论由 AI 辅助起草;每条论断我都已对照 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
English
Proposal
Yes: Maka should remove all redaction.
Here, redaction means any mechanism that examines arbitrary strings and rewrites content suspected of containing secrets after that content has already been produced or transported. This includes:
redactedflags propagated through events and projections;Not returning a credential at all is access control/data projection, not redaction. Maka must continue to protect credential stores and omit credential values from read APIs, but it should not maintain a system-wide content-rewriting feature.
The product contract should be explicit
Maka should make no promise to detect or remove secrets from arbitrary user, model, tool, process, error, file, or network content.
Those bytes should remain faithful. If a command prints a secret, it may appear in tool output, events, persistence, and the UI. Users must not assume that a transcript, log, screenshot, or export is safe to share merely because Maka processed it.
This is a narrower but honest contract. The current alternative is a broad promise that cannot be fulfilled consistently.
Why delete the concept instead of improving it?
Maka's security model already describes in-process output redaction as a best-effort heuristic rather than containment. The mechanism does not establish a real security boundary:
<redacted>marker can be mistaken for a guarantee even though another path may already contain the original value.A rough inventory on current
mainfindsredactSecrets()at 224 production call sites across 61 files, with at least 39 test files encoding redaction behavior or state. Seven central redaction/streaming files alone contain about 1,836 lines. These numbers indicate architectural reach, not guaranteed removable LOC.#2990 and #3007 are a useful example: preserving whole-text regex semantics under streaming required a differential oracle, bounded recovery state, truncation rules, and a dedicated state machine. That implementation was correct under the existing contract. The stronger conclusion is that the contract itself is not worth preserving.
Adding more patterns or retaining a “temporary” exact-value scrubber leaves the wrong abstraction alive. Temporary exceptions become permanent compatibility requirements, and every remaining scrubber continues to imply a guarantee it cannot provide.
What remains after redaction is removed
These are security boundaries, not redaction, and should remain:
set/clearcredential mutations;configured: true/falserather than a mask sentinel;The hard removal prerequisite is narrow: deleting redaction must not cause credential read APIs to start returning stored values. Any current mask-based settings API should first become an omission-based/write-only contract.
This prerequisite does not extend to arbitrary content channels. If user or tool content contains the same bytes as a credential, Maka will not scan and rewrite it.
What should be future work
If Maka later needs stronger secret isolation, it should be designed as a separate architecture:
None of these should be a prerequisite for deleting the current redaction system. Keeping an unbounded heuristic until a perfect replacement exists only preserves the wrong abstraction indefinitely.
Screen-sharing privacy and DLP are also separate products. If we want them, they should be explicit modes with measurable guarantees—not invisible mutation of Maka's internal source of truth.
Kill list
redactSecrets()and equivalent generic helpers;redactedpropagation;••••••round-trip sentinel once settings use write-only mutations.Do not replace these with a new redaction service, compatibility shim, feature flag that becomes permanent, or two long-lived data paths.
Deletion plan
configuredmetadata; expose explicit write-onlysetandclearoperations.What would falsify this proposal?
The proposal should be rejected if Maka has a concrete regulatory, contractual, or approved product requirement to perform DLP over arbitrary unstructured content.
If that requirement exists, the answer is still not to preserve today's regex system by default. We should specify the protected principals, supported secret classes, false-positive/false-negative targets, enforcement points, and audit requirements, then design a real DLP system against that contract.
Absent such a requirement, redaction is complexity without a defensible guarantee and should be deleted.
Decisions needed
简体中文
提案
是的:Maka 应该删除所有脱敏。
这里的“脱敏”是指:在任意字符串已经产生或传输之后,再检查其中疑似 secret 的内容并改写它。包括:
redactedflag;完全不返回 credential 属于访问控制/数据投影,不是脱敏。Maka 必须继续保护 credential store,并从读取 API 中省略 credential value,但不应继续维护一套全局内容改写功能。
产品契约应该明确
Maka 应明确不承诺识别或删除任意 user、model、tool、process、error、file 或 network content 中的 secret。
这些字节应该保持原样。如果某条命令打印了 secret,它可能出现在 tool output、event、persistence 和 UI 中。用户不能因为内容经过 Maka 处理,就默认 transcript、log、截图或 export 可以安全分享。
这是一个更窄但诚实的契约。当前替代方案则是在暗示一个无法稳定兑现的宽泛承诺。
为什么应该删除这个概念,而不是继续改进?
Maka 的安全模型已经把进程内输出脱敏描述为 best-effort heuristic,而不是 containment。它并没有建立真实安全边界:
<redacted>很容易被理解成安全保证,但其他路径可能早已包含原始值。对当前
main的粗略盘点显示:redactSecrets()分布在 61 个生产文件的 224 个调用点;至少 39 个测试文件固化了脱敏行为或状态。仅 7 个核心脱敏/流式文件就约有 1,836 行代码。这些数字只表示架构影响面,不代表保证可删除的行数。#2990 和 #3007 是很好的例子:为了在流式场景维持全量正则语义,系统需要 differential oracle、有界 recovery state、截断规则和专用状态机。在现有契约下,这个实现是正确的;更强的结论是,这个契约本身不值得保留。
继续增加 pattern,或者保留“临时”的 exact-value scrubber,都会让错误抽象继续存活。临时例外最终会成为永久兼容要求,而任何残留 scrubber 都会继续暗示它无法提供的保证。
删除脱敏后保留什么
以下属于安全边界而不是脱敏,应该保留:
set/clearmutation;configured: true/false而不是 mask sentinel 的 read DTO;删除前唯一的硬性前置条件很窄:删除脱敏不能导致 credential read API 开始返回已存储值。 当前任何依赖 mask 的 settings API,都应先改成字段省略加 write-only contract。
这个前置条件不扩展到任意内容通道。如果 user 或 tool content 中包含与某个 credential 相同的字节,Maka 不会扫描并改写它。
哪些应该交给未来解决
如果 Maka 未来需要更强的 secret 隔离,应该将其设计为独立架构:
这些都不应成为删除当前脱敏系统的前置条件。在完美替代方案出现之前保留无边界 heuristic,只会让错误抽象无限期存在。
屏幕分享隐私和 DLP 也是独立产品。如果确实需要,就应该做成具有可度量保证的显式模式,而不是隐式修改 Maka 的内部事实源。
Kill list
redactSecrets()及等价通用 helper;redacted传播;••••••往返 sentinel。不要用新的 redaction service、兼容 shim、最终永久化的 feature flag,或者两条长期并存的数据路径替代它们。
删除计划
configuredmetadata;提供明确、write-only 的set和clear操作。什么证据可以推翻本提案?
如果 Maka 存在明确的监管、合同或已批准产品要求,必须对任意非结构化内容执行 DLP,那么本提案应被否决。
即便存在这个要求,答案仍然不是默认保留当前正则系统。我们应该先明确受保护主体、支持的 secret 类型、误报/漏报目标、执行点和审计要求,再围绕该契约设计真正的 DLP 系统。
如果不存在这种要求,那么脱敏就是一套没有可辩护保证的复杂度,应该删除。
需要决定的问题
All reactions