@fancyrobot/fred
Fred AI agent framework - core package
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.
Maintainers
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:env-spread | AI (semgrep): env-spread is used to pass environment to a spawned subprocess in stdio transport — standard and intentional pattern. | ai | |
| semgrep | semgrep:etc-passwd-access | AI (semgrep): Hit is inside a code comment explaining path traversal prevention, not actual /etc/passwd access. | ai | |
| semgrep | semgrep:base64-decode | AI (semgrep): Legitimate deserialization of Uint8Array in a storage serialization module, not payload hiding. | ai | |
| semgrep | semgrep:api-obfuscation-reflect | AI (semgrep): Standard Proxy trap pattern using Reflect.get for symbol properties; not obfuscation. | ai |
Versions (showing 5 of 5)
| Version | Deps | Published |
|---|---|---|
| 1.0.0 | 4 / 4 | |
| 0.2.2 | 3 / 4 | |
| 0.2.1 | 3 / 4 | |
| 0.2.0 | 3 / 4 | |
| 0.1.0 | 3 / 4 |
v0.2.2
2 findingsSpreading entire process.env into an object — may capture all secrets 43 | return new Promise((resolve, reject) => { 44 | // Merge environment variables > 45 | const processEnv = { ...process.env, ...this.env }; 46 | 47 | this.process = spawn(this.command, this.args, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.1
2 findingsSpreading entire process.env into an object — may capture all secrets 43 | return new Promise((resolve, reject) => { 44 | // Merge environment variables > 45 | const processEnv = { ...process.env, ...this.env }; 46 | 47 | this.process = spawn(this.command, this.args, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.2.0
2 findingsSpreading entire process.env into an object — may capture all secrets 43 | return new Promise((resolve, reject) => { 44 | // Merge environment variables > 45 | const processEnv = { ...process.env, ...this.env }; 46 | 47 | this.process = spawn(this.command, this.args, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.0
2 findingsSpreading entire process.env into an object — may capture all secrets 43 | return new Promise((resolve, reject) => { 44 | // Merge environment variables > 45 | const processEnv = { ...process.env, ...this.env }; 46 | 47 | this.process = spawn(this.command, this.args, {
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.