residoo 0.4.8 → 0.4.9
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/README.md +4 -4
- package/package.json +1 -1
- package/src/scan.js +19 -12
package/README.md
CHANGED
|
@@ -195,10 +195,10 @@ won't be built into the tool that writes it.
|
|
|
195
195
|
preview, never the real value, including in `--json` mode. A decoded or
|
|
196
196
|
rejoined secret is redacted exactly like a plain one.
|
|
197
197
|
- On an interactive terminal, prints who it is and where it lives before
|
|
198
|
-
scanning starts (`residoo v0.4.
|
|
198
|
+
scanning starts (`residoo v0.4.9 · find secrets your AI coding agent left
|
|
199
199
|
on disk` plus the repo URL), then a live spinner naming the current file
|
|
200
200
|
as it scans. Every report also opens with the exact version and timestamp
|
|
201
|
-
it was run with (`residoo v0.4.
|
|
201
|
+
it was run with (`residoo v0.4.9 · scanned 2026-01-01 12:00`; `--json`
|
|
202
202
|
carries the same as `residooVersion`/`scannedAt`), so a report pasted or
|
|
203
203
|
screenshotted later never leaves you guessing which build produced it.
|
|
204
204
|
When there are findings, the report closes with a "Next steps" pointer to
|
|
@@ -429,7 +429,7 @@ As a GitHub Action (this repository doubles as a composite action):
|
|
|
429
429
|
```yaml
|
|
430
430
|
steps:
|
|
431
431
|
- uses: actions/checkout@v4
|
|
432
|
-
- uses: dandovdub/residoo@v0.4.
|
|
432
|
+
- uses: dandovdub/residoo@v0.4.9
|
|
433
433
|
```
|
|
434
434
|
|
|
435
435
|
As a pre-commit hook:
|
|
@@ -437,7 +437,7 @@ As a pre-commit hook:
|
|
|
437
437
|
```yaml
|
|
438
438
|
repos:
|
|
439
439
|
- repo: https://github.com/dandovdub/residoo
|
|
440
|
-
rev: v0.4.
|
|
440
|
+
rev: v0.4.9
|
|
441
441
|
hooks:
|
|
442
442
|
- id: residoo
|
|
443
443
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "residoo",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Find secrets leaking through your AI coding agent's session history. Zero network calls in the scan path, zero dependencies.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "CloudRoam (https://cloudroam.io)",
|
package/src/scan.js
CHANGED
|
@@ -652,29 +652,36 @@ async function scan({ sources, includeNoisy = false, includeSuppressed = false,
|
|
|
652
652
|
// needs saying once; per-vendor detail becomes a compact count table.
|
|
653
653
|
// Deliberately not gated on isTTY like the scan spinner: a script
|
|
654
654
|
// piping through a pager or into a log still needs this disclosure.
|
|
655
|
+
//
|
|
656
|
+
// Three columns, not two: an earlier version of this table showed only
|
|
657
|
+
// the vendor name ("AWS 2"), which answers "how many" but drops the
|
|
658
|
+
// one thing a security-conscious user actually wants to check before
|
|
659
|
+
// agreeing to real outbound calls, namely WHICH endpoint each vendor's
|
|
660
|
+
// credential gets sent to. Every vendor's own SIMPLE_VERIFY_VENDOR_LABEL
|
|
661
|
+
// is already written "<Vendor>'s <endpoint>", so split it into the two
|
|
662
|
+
// columns rather than maintaining a second, parallel description.
|
|
655
663
|
const rows = [];
|
|
656
664
|
if (pendingAwsVerifications.size > 0 && awsAvailable) {
|
|
657
|
-
rows.push(["AWS", pendingAwsVerifications.size]);
|
|
665
|
+
rows.push(["AWS", "sts:get-caller-identity", pendingAwsVerifications.size]);
|
|
658
666
|
}
|
|
659
667
|
if (pendingPlanetScaleVerifications.size > 0) {
|
|
660
|
-
rows.push(["PlanetScale", pendingPlanetScaleVerifications.size]);
|
|
668
|
+
rows.push(["PlanetScale", "organizations endpoint", pendingPlanetScaleVerifications.size]);
|
|
661
669
|
}
|
|
662
670
|
for (const [ruleId, byValue] of pendingSimpleVerifications) {
|
|
663
671
|
if (byValue.size === 0) continue;
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
// part before "'s" rather than maintaining a second, parallel map
|
|
667
|
-
// of the same names.
|
|
668
|
-
const vendor = SIMPLE_VERIFY_VENDOR_LABEL[ruleId].split("'s ")[0];
|
|
669
|
-
rows.push([vendor, byValue.size]);
|
|
672
|
+
const [vendor, endpoint] = SIMPLE_VERIFY_VENDOR_LABEL[ruleId].split("'s ");
|
|
673
|
+
rows.push([vendor, endpoint, byValue.size]);
|
|
670
674
|
}
|
|
671
675
|
if (rows.length > 0) {
|
|
672
|
-
const
|
|
673
|
-
const
|
|
676
|
+
const vendorWidth = Math.max(...rows.map(([vendor]) => vendor.length));
|
|
677
|
+
const endpointWidth = Math.max(...rows.map(([, endpoint]) => endpoint.length));
|
|
678
|
+
const table = rows
|
|
679
|
+
.map(([vendor, endpoint, count]) => ` ${vendor.padEnd(vendorWidth)} ${endpoint.padEnd(endpointWidth)} ${count}`)
|
|
680
|
+
.join("\n");
|
|
674
681
|
process.stderr.write(
|
|
675
682
|
"residoo --verify: checking whether these credentials are still active. Real network " +
|
|
676
|
-
"calls,
|
|
677
|
-
"
|
|
683
|
+
"calls, using the exact value found in your transcript, one at a time. Nothing is cached " +
|
|
684
|
+
"or sent anywhere but the endpoint listed below.\n\n" +
|
|
678
685
|
table + "\n\n"
|
|
679
686
|
);
|
|
680
687
|
}
|