Added
- File-descriptor redirections are modeled. New
RedirectionTypecasesmergeStreams(2>&1,1>&2,>&2,>&-),combinedOutput(&>file,>&file) andcombinedAppendOutput(&>>file). All three shell parsers (bash/POSIX, Windowscmd, PowerShell) now recognize these forms. - Benign-redirection marker. A new
BenignRedirectionDetector(codebenign-redirection, in the default suite) records stream merges and null-sink discards as explicitSecurityLevel.safefindings for audit visibility. Being below every actionable level, it never changes a decision.
Changed
- Innocuous redirections no longer over-report a filesystem write. Stream merges (
2>&1) touch no file, and discards to a null sink (/dev/null,NUL,$null) write/read no real file, so none of them contributewriteFilesystem/readFilesystem(and thus nomodifyFileseffect). A genuine target such as> out.txtor&> out.logstill does.
Fixed
2>&1is no longer mis-parsed. Previously the bash tokenizer only knew2>/2>>, socmd 2>&1produced a target-less2>redirection, a spurious "Redirection without a target" diagnostic, and a phantomCommandInvocationwith executable1.1>&2and&>/dev/nullbroke the same way. These now parse as a single clean command with the correct redirection and no diagnostic. The discard-everything idiomcmd >/dev/null 2>&1parses as one command with two redirections.
Full changelog: v1.3.0...v1.4.0