Skip to content

feat(preallow): name the surface that held the match in withheld reasons, and state the output scan boundary - #20

Merged
liby merged 1 commit into
mainfrom
feature/preallow-output-scan-boundary
Oct 29, 2026
Merged

liby merged 1 commit into
mainfrom
feature/preallow-output-scan-boundary

Conversation

@liby

@liby liby commented Oct 29, 2026

Copy link
Copy Markdown
Member

preallow 0.0.11 names, in a withheld output's reason, where the credential-shaped match was: the full output a large result leaves in a file, a hook's note beside the result, or text the agent reads that the tool's result does not hold. The three shared one reason, so the log could not show which of them real sessions reach, and a proposal to remove one of those branches had no evidence either way. A failed scan and an unreadable full-output file keep their own reasons, and what the scan finds is unchanged.

The mod's AGENTS.md now states the output scan's boundary. It promises what its patterns find and no more. It does not learn this machine's secret values, since finding and maintaining that list is a responsibility of its own and every value the plugin held would be one more place to leak from; nor does it scan calls the plugin did not allow or search redacted output for the originals. A pattern is narrowed only for a false positive that took away what a real session needed, since a narrower shape lets a credential through. The file is grouped under headings by what a change touches.

The README states the scan's scope beside the redaction it describes: only calls the plugin allowed, and finding nothing does not show that the output holds no secret. Its known gaps now describe the scan's misses and false positives by what a user meets, and the withheld log entry lists every reason. Output handling moves up to follow what the judge leaves to native approval, and known gaps now come before the log reference.

The clean-case test title no secret: ... itself matched the secret-assignment shape and was redacted in a real session's test output; those titles now read nothing found: .... Cases that fail on the same bug as another test are removed, and two fixtures now reach branches no test reached: the directory walk stopping at its entry count with no folder left unread, and the last fetch falling back to the common FETCH_HEAD. Each new reason was reverted to the old shared text in turn, and a test failed each time.

The three paths that withhold a whole output for a credential-shaped
match, in the file a large result is saved to, in a hook's note beside
the result, and in text the agent reads that the tool's result does not
hold, shared one reason. The log could not tell which of them real
sessions meet, so whether a branch still earns its place could not be
answered from evidence. Each now names its surface; a failed scan and an
unreadable full-output file keep their own reasons. What the scan finds
is unchanged.

The mod's AGENTS.md now states the output scan's boundary: it promises
what its patterns find and no more, does not learn this machine's
secret values, scan calls the plugin did not allow, or search redacted
output for the originals, and leaves keeping a secret out of reach to
the engine's sandbox, permission rules, and the user's credential
setup. A pattern stays broad and is narrowed only for a false positive
that took away what a real session needed, since a false positive costs
every copy of the value, the whole output where it cannot be redacted,
and the classifier for the same call run again. The file is grouped
under headings by what a change touches.

The README states that scope beside the redaction it describes, lists
the scan's known gaps by what a user meets (unknown formats, known
formats gitleaks excludes, output formatting, false positives), and
lists the `withheld` reasons.

A test titled `no secret: ...` matched the secret-assignment shape and
was redacted in a real session's test output; the clean cases are now
titled `nothing found: ...`. Cases that fail on the same bug as another
test are removed, and two fixtures now reach branches no test did: the
walk stopping at its entry count with no folder left, and the last
fetch falling back to the common `FETCH_HEAD`.
@liby
liby merged commit 1c7d02c into main Oct 29, 2026
4 checks passed
@liby
liby deleted the feature/preallow-output-scan-boundary branch October 29, 2026 15:52
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