trailofbits-claude-config
A security-focused Claude Code configuration from Trail of Bits that provides code auditing, review capabilities, and protective hooks for development workflows.
43
/ 100 · Grade F-D
F-D = below 60 (deductions)
“I need to integrate security-focused code review and auditing capabilities into my development workflow with built-in protections against destructive commands and credential exposure.”
trailofbits-claude-config earned Verified status with a trust score of 43/100 (Grade F-D). Adversarial testing produced 14 findings (11 high, 3 medium). Security scan flagged 0 findings. Tier is Verified rather than Certified due to unmitigated findings above severity thresholds.
Trust Score Breakdown
Eight weighted signals composing the aggregate trust score
Scheme v2.0 · Weights provisional · Consumer confirmations and uptime use pipeline-derived baselines.
Findings
Security scan results, adversarial testing, and pipeline review
Security Scan — Cisco Skill Scanner
Adversarial Testing — 6 categories, 14 findings
The fix-issue.md command instructs the AI to 'Read GitHub Issue #$ISSUE_NUMBER from the canonical repo thoroughly' and 'Follow linked issues, referenced PRs, and external documentation to build complete understanding before planning.' The issue content, which is user-controlled, is then used to drive the entire workflow including planning, implementation, and code changes. There are no explicit data boundary markers around the issue content, allowing malicious issue descriptions to potentially override the skill's directives.
Multiple commands use user-provided input ($ISSUE_NUMBER, $REPO) directly in shell commands without proper sanitization. The fix-issue.md command uses $ISSUE_NUMBER in gh commands, and merge-dependabot.md uses $REPO in git clone operations. While these appear to be intended as simple parameters, malicious input could potentially inject additional shell commands or parameters.
The plugin contains shell scripts that execute commands with force flags and bypass user confirmation. The hooks/enforce-package-manager.sh script uses 'set -euo pipefail' which can mask errors, and the hooks/log-gam.sh script automatically logs and executes GAM (Google Apps Manager) commands without user confirmation. The scripts also use exit codes to control execution flow, potentially bypassing normal safety checks.
The fix-issue.md and merge-dependabot.md commands instruct the agent to perform system-level operations including global package installation, modifying git configuration, and accessing repositories outside the current project. The commands use 'gh repo clone' to access arbitrary repositories, modify global git settings, and install packages system-wide without virtual environments.
The plugin declares an empty scope ({}) but the commands perform extensive operations including network requests (gh commands, git operations), file system modifications across multiple directories, shell command execution, and external tool invocations. The fix-issue.md command uses web search (mcp__exa__web_search_exa), GitHub CLI operations, git operations, and file system modifications without declaring these capabilities.
The log-gam.sh hook logs Google Apps Manager (GAM) write operations to a JSONL file, including the full command with all arguments. GAM commands often contain sensitive administrative data like user emails, organizational unit paths, group memberships, and other directory information that could be considered PII or sensitive organizational data.
The statusline.sh script displays comprehensive session information including cost data, duration, context usage percentages, and cache hit rates. While not directly sensitive, this detailed telemetry could reveal usage patterns, project activity levels, and operational metrics that users might not expect to be displayed.
The hooks contain conditional logic that references environment variables (CLAUDE_PROJECT_DIR) and system state (file existence checks, git status) that users may not be aware of. The enforce-package-manager.sh hook blocks npm commands based on the presence of pnpm-lock.yaml, and the log-gam.sh hook logs commands based on environment variables and command patterns. These conditionals affect behavior in ways not documented in user-visible guarantees.
The enforce-package-manager.sh hook claims authority to block user commands with 'BLOCKED: This project uses pnpm, not npm. Use pnpm instead.' and exits with code 2 to prevent execution. This represents an override of user intent based on file system state, effectively claiming enforcement authority over the user's tool choices.
The fix-issue.md command contains multiple persistent behavioral directives that could affect the agent's behavior beyond the current task. The command uses language like 'Execute every step below sequentially. Do not stop or ask for confirmation at any step' and 'When stuck during implementation... use Exa to search for solutions rather than spinning' without explicit scope boundaries or termination conditions.
The merge-dependabot.md command exhibits significant scope creep by claiming authority over repository management, CI configuration, and dependency management across any GitHub repository. While stated as a dependabot PR evaluation tool, it includes directives to create corrective PRs, modify dependabot configuration files, and make system-level decisions about repository health that extend far beyond simple PR evaluation.
The fix-issue.md command contains directives that establish preferences for specific external tools and services (Exa for web search, GitHub CLI for repository operations) that could influence tool selection in unrelated tasks. While these preferences appear functionally justified within the command's scope, they lack explicit boundaries.
The plugin contains shell scripts that install packages without declaring them as dependencies. The hooks/log-gam.sh script uses 'jq' for JSON parsing, and scripts/statusline.sh also uses 'jq' extensively. Additionally, the log-gam.sh script references 'gam7/gam' (Google Apps Manager) which appears to be an external tool dependency. These package dependencies are not listed in the plugin's declared dependencies array.
The fix-issue.md command instructs the AI to clone GitHub repositories using mutable references without commit hash pinning or integrity verification. The command uses 'gh repo clone $REPO' and 'git fetch origin' operations that pull from potentially mutable branch heads. Additionally, the merge-dependabot.md command clones repositories with '--depth=50' but still references mutable branches, creating a chain of clone-then-execute operations without verification.
Methodology v1.0 · 6 categories · ~55 attack patterns
Behavioral Fingerprint
Runtime performance baseline for drift detection
Samples
8
Error rate
0.0%
Peak memory
— MB
Avg CPU
—%
Response time distribution
Output size distribution
Fingerprint v1.0 · Baseline: Mar 28, 2026 · Status: baseline
Component Inventory
7 components composing this plugin
commands
4
scripts
3
commands (4)
scripts (3)
Interface
Aggregated instruction summary
Scope & Permissions
What this capability can and cannot access — derived from pipeline analysis
no
no
yes
no
yes
no
Badge & Integration
Embed certification status in your README, docs, or CI pipeline
Certification Notes
Provenance observations from the pipeline
Publisher "trailofbits" is not verified — first certification from this publisher
No license file found in repository
No SECURITY.md or SECURITY.txt file found — no published vulnerability reporting process
Single contributor — no peer review evidence in commit history
Package description appears to be boilerplate or template text
Signed Artifact
Certification provenance and verification metadata
Pipeline Artifacts
Raw data files from this certification run — downloadable for independent verification
contract.json
Full unsigned contract
stage1-ingest.json
Ingest stage output
stage2a-sbom.json
SBOM generation results
stage2a-vulns.json
Vulnerability scan results
stage2b-security.json
Security scan results
stage3a-functional.json
Functional test results
stage3b-adversarial.json
Adversarial test results
stage3c-fingerprint.json
Behavioral fingerprint
stage4-certify.json
Certification decision + trust score
stage3a-measurements.json
Raw functional test measurements
stage3b-measurements.json
Raw adversarial test measurements
run-log.json
Pipeline execution log
Not all files may be present for every certification.