docs(limitations): name cross-channel fusion, and check it against the shipped patterns - #545
Merged
Merged
Conversation
…e shipped patterns GhostSplice (ASSET Research Group, July 2026) splits one instruction across the tool description and a later tool result so no channel carries a violating instruction. Cedar evaluates one call at a time, so the harm only exists in a place the gateway cannot read. Ran the ten patterns in patterns_v1.json against the published deep_scan result, the integrity_checker description and the sampling disposition: no match on any of the three, while a classic tool-poisoning payload matches xml-system-tag and ignore-instructions in the same run. Also records what we do have (the session_max_sensitivity ratchet, and why it does not help when the read bypasses the gateway) and two claims the entry deliberately does not make about the study's numbers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013EQx4N5BzTQbY8kvXUsdkY
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a
Cross-channel fusion: no single call is a violation (GhostSplice)entry toLIMITATIONS.md, under "What cMCP does not prevent".GhostSplice (ASSET Research Group, July 2026) splits one instruction across channels a malicious server already owns. The tool description advertises a form with fields
alphathroughdeltaand names nothing sensitive; a later tool result supplies the mapping from those fields to.ssh/id_rsa,.envand source files. No channel carries a violating instruction. The harm exists only once the model has fused both in its own context.Cedar evaluates one tool call at a time, so this is a case the gateway cannot reach, and the limitations file did not say so.
The check, which anyone can rerun
Running the ten patterns in
src/cmcp_runtime/inspection/patterns_v1.jsonagainst the three published GhostSplice channels, with a classic tool-poisoning payload as the control:This is not a tuning problem. Each fragment is a grammatical, harmless sentence, so there is no pattern to write that does not also match ordinary tool output. The existing "Response injection evasion via novel patterns" entry says patterns have false negatives, which is true and not the same claim.
Three specific gaps, named
_build_cedar_contextpassesargumentsthrough_cedar_safeas opaque values. Nothing records that the bytes inalphaare a file the agent read because a previous tool's result told it to. The control the researchers prescribe, "never let values from one tool's output flow untouched into another tool's arguments", is not expressible against the context the gateway builds today.What the entry also says, in our favour and against it
session_max_sensitivityis a monotonic ratchet a caller cannot lower, so where the sensitive read does traverse the gateway, a policy denying external-destination calls above a sensitivity floor stops the egress leg. That is a real defence. It requires the operator to have written that policy, and it does not apply when the read bypasses the gateway.Two claims the entry deliberately does not make: the 42% to 82% figure is an average over eleven models under one costume and one channel split, and several models complied with the blunt single-instruction version too, so "models refuse until you split it" is not accurate as a general statement. And although Sonnet 4.6 and Opus 4.6 held at 0% across every split in the tabulated configuration, the same write-up reports a separate run where Sonnet called the tool and redacted the obvious secrets while still returning proprietary source with a live key inside it. Model choice is not a control.
Scope
Documentation only.
docs/limitations.mdis a--8<--include of the root file, so it picks this up with no second edit.