bdo-cli 0.49.2 → 0.49.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,60 @@ All notable changes to Bushido (bdo) will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.49.4] (2026-11-04)
9
+
10
+ ### Security
11
+
12
+ Findings of a differential audit: generated commands were judged by the
13
+ permission gate and then really executed in bash, zsh and dash among recording
14
+ fake programs. The audit now runs in the test suite.
15
+
16
+ - **The gate's idea of whitespace was wider than the shell's.** NBSP, CR, VT, FF
17
+ and other Unicode spaces are word characters to a shell, but the tokenizer
18
+ treated them as blanks. Since the 0.49.3 comment fix that hid commands:
19
+ `git status<NBSP># x; cmd` looked like a comment, was auto-approved by a
20
+ `git status` allow rule, and ran `cmd`. Only space, tab and newline separate
21
+ words now, and a comment ends only at a newline.
22
+ - **A rewrite could change what was judged.** The gate judges the command as
23
+ written, but the shell runs the rewrite: trimming a trailing NBSP or VT and
24
+ replacing an in-word line continuation with a space turned
25
+ `git push --force\<newline>x` into `git push --force x`. Commands whose words
26
+ a rewrite could change are no longer rewritten (they only lose token savings).
27
+ - **File writes behind an fd-dup.** `2>&1x` writes to a file named `1x`, but was
28
+ read as a descriptor duplication and auto-approved. Only a whole word of
29
+ digits (or `-`) is an fd now.
30
+ - **Deny and ask rules matched the literal text.** `git push "--force"`,
31
+ `--fo''rce`, `--forc\e` and `git push --force` all ran `--force` past a
32
+ `git push --force*` deny rule. These rules now also see each segment as the
33
+ shell reads it (quotes and escapes removed, blanks collapsed). Allow rules
34
+ still match the text as written, so anything unusual falls back to a prompt.
35
+ - **Expansions could hide a denied argument.** `git push ${X:---force}`,
36
+ `{--force,}` and `--forc?` have values only the shell knows. If a deny or ask
37
+ rule concerns the same program, they are no longer auto-approved: the verdict
38
+ is Ask.
39
+
40
+ ## [0.49.3] (2026-11-03)
41
+
42
+ ### Security
43
+
44
+ - **Hook permission gate: comments and redirects can no longer hide
45
+ commands or arguments.**
46
+ - A quote inside a comment (`git status # it's`) was read as opening a
47
+ string, so the next line's command was swallowed into "one" `git status`
48
+ and auto-approved by a `git status` allow rule. Comments (a `#` that
49
+ starts a word, outside quotes) now run to the end of the line in the
50
+ tokenizer and in the substitution scan, as in bash.
51
+ - Each permission segment was cut at its first redirect, so
52
+ `git push 2>/dev/null --force` was checked as `git push` and a deny rule
53
+ for `git push --force` never matched. Redirects and their targets are
54
+ now removed and the words after them kept: it is checked as
55
+ `git push --force`.
56
+ - A line continuation split an argument for the check but not for bash:
57
+ `git push --for\<newline>ce` runs `git push --force` yet dodged a deny
58
+ rule for it. Backslash-newlines are now removed before checking, as bash
59
+ does (not inside single quotes, and not at the end of a comment, where
60
+ the next line remains its own command).
61
+
8
62
  ## [0.49.2] (2026-10-31)
9
63
 
10
64
  ### Security
package/README.md CHANGED
@@ -119,7 +119,7 @@ gh attestation verify "$(brew --cache bushido)" --repo tedorigawa001/TokenReduct
119
119
  ### Verify Installation
120
120
 
121
121
  ```bash
122
- bdo --version # Should show "bdo 0.49.2"
122
+ bdo --version # Should show "bdo 0.49.4"
123
123
  bdo gain # Should show token savings stats
124
124
  ```
125
125
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/tedorigawa001/TokenReductionTool-BDO/releases/download/v0.49.2"
3
+ "https://github.com/tedorigawa001/TokenReductionTool-BDO/releases/download/v0.49.4"
4
4
  ],
5
5
  "author": "Patrick Szymkowiak",
6
6
  "bin": {
@@ -91,7 +91,7 @@
91
91
  "zipExt": ".tar.xz"
92
92
  }
93
93
  },
94
- "version": "0.49.2",
94
+ "version": "0.49.4",
95
95
  "volta": {
96
96
  "node": "18.14.1",
97
97
  "npm": "9.5.0"