Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
ef68ac3
fix: repair 26 broken detection patterns and add hybrid confidence model
riteshkew Feb 16, 2026
8be1c78
feat: add rule validation and silent failure logging (T1.5)
riteshkew Feb 16, 2026
c53954c
feat: three-tier confidence model with context weighting (T1.2)
riteshkew Feb 16, 2026
c073c75
feat: known-malicious skill signatures database (T1.1)
riteshkew Feb 16, 2026
faece06
feat: add malware distribution and memory poisoning rules (T1.6)
riteshkew Feb 16, 2026
4a36486
feat: scan MCP config files for credentials (T1.3)
riteshkew Feb 16, 2026
980c873
feat: platform path override via CLI argument (T1.4)
riteshkew Feb 16, 2026
01f4555
test: comprehensive Sprint 1 test suite (115 new tests)
riteshkew Feb 16, 2026
44fe0fc
feat: context-aware pattern matching with multipliers (T2.1)
riteshkew Feb 16, 2026
a86acc5
feat: CLI polish flags --quiet, --ignore, --fail-on (T2.2)
riteshkew Feb 16, 2026
eb0f86b
feat: .firmisignore file support (T2.3)
riteshkew Feb 16, 2026
d2e908c
feat: Python-specific patterns across rule files (T3.1)
riteshkew Feb 16, 2026
21285bb
feat: supply chain security rules (T3.2)
riteshkew Feb 16, 2026
72f4a66
feat: permission over-grant detection rules (T3.3)
riteshkew Feb 16, 2026
db6541e
feat: security score A-F grading system (T3.4)
riteshkew Feb 16, 2026
b29b18c
test: add Sprint 3 tests for permission-overgrant and security score
riteshkew Feb 16, 2026
f4e4065
fix: eliminate FP explosion from 4 rule bugs found during platform te…
riteshkew Feb 16, 2026
87f3faa
fix: P0 ship-blockers — YAML deser, loader resilience, grade caveats
riteshkew Feb 17, 2026
f178bf9
refactor: Phase 2 pre-M0 cleanup — version, types, registry, refactors
riteshkew Feb 17, 2026
7a51e34
test: PM0-6 — must-catch, golden-path, and coverage grade tests
riteshkew Feb 17, 2026
1b79555
feat: M0 foundation — secret detection, OSV scanning, enhanced HTML r…
riteshkew Feb 17, 2026
3997e2e
fix: harden scanner from 15-fixture real-world matrix testing
riteshkew Feb 17, 2026
a462fdd
fix: real-world hardening — eliminate FP explosion, close FN gaps
riteshkew Feb 17, 2026
82011ef
refactor: remove Supabase platform scanner, update docs with audit le…
riteshkew Feb 17, 2026
d85daf9
docs: next phase plan — FN gap closure + M0.4 YARA
riteshkew Feb 17, 2026
f8b9ca9
feat: Sprint A rules — tool-poisoning, network-abuse, file-system-abu…
riteshkew Feb 17, 2026
7503f05
feat: M0.4 YARA-X pattern matching engine with malware signatures
riteshkew Feb 17, 2026
21e57ca
chore: update v1.3.0 version and docs to reflect Sprint A + M0 comple…
riteshkew Feb 17, 2026
3e8d545
feat: M1.1 — firmis discover command with dep + model detection
riteshkew Feb 17, 2026
3dcb33d
feat: M1.2 — firmis bom command (CycloneDX 1.7 Agent BOM)
riteshkew Feb 17, 2026
53e188d
feat: M1.3 — firmis ci command (discover → bom → scan → report pipeline)
riteshkew Feb 17, 2026
d88f4ab
feat: Sprint B — credential, prompt-injection, and supply-chain rule …
riteshkew Feb 18, 2026
743849d
docs: add CLAUDE.md for public repo rules
riteshkew Feb 18, 2026
c1881c9
fix: dogfood security hardening — dedup, FP reduction, input validati…
riteshkew Feb 18, 2026
edab5c5
feat: add 34 detection rules — access-control, insecure-config, and 4…
riteshkew Feb 19, 2026
bec4fec
feat(docs): scaffold Starlight docs site with full navigation and JSO…
riteshkew Mar 5, 2026
9f44972
feat(docs): add core content — quickstart, landing page, 11 CLI refer…
riteshkew Mar 5, 2026
b5f8bd8
feat(docs): add concepts, platforms, and auto-generated rule catalog
riteshkew Mar 5, 2026
ec77c18
feat(docs): add llms.txt generator, FAQ schema, rules, reference, int…
riteshkew Mar 5, 2026
b62f615
feat(docs): add changelog, security, privacy, ai-plugin.json, robots.txt
riteshkew Mar 5, 2026
e7f3c61
docs: add docs site implementation plan
riteshkew Mar 5, 2026
747ce36
docs: update docs site content and styling
riteshkew Mar 5, 2026
2af701f
feat: compact CLI output, auto-HTML report, gitignore-aware scanning,…
riteshkew Mar 5, 2026
7d4b9a5
feat: auto-open HTML report in browser after scan
riteshkew Mar 5, 2026
755642b
feat: interactive HTML report with filters, collapsible sections, pol…
riteshkew Mar 5, 2026
40d91fa
chore: update package-lock.json
riteshkew Mar 5, 2026
c9a2eec
1.4.1
riteshkew Mar 5, 2026
779b5b2
sync: cherry-pick public-safe changes from firmis-engine v1.6.0
riteshkew Mar 10, 2026
fa72913
feat: add GitHub Action for Firmis security scanning
riteshkew Mar 11, 2026
891c101
docs: v1.7.0 — firmis init, GitHub Action, auto-deploy workflow
riteshkew Mar 11, 2026
5b86910
fix: use env vars for wrangler auth in deploy-docs workflow
riteshkew Mar 11, 2026
53fe00e
feat: add MCP server, AGENTS.md, and README optimization for LLM disc…
riteshkew Mar 12, 2026
8e7a622
feat: sync updated rules and matchers from OpenClaw validation
riteshkew Mar 12, 2026
740403c
feat: Agent of Chaos rule hardening, supabase platform, test_file mul…
riteshkew Mar 12, 2026
845b8c6
docs: update CLAUDE.md with git commit rules
riteshkew Mar 12, 2026
ae4cd23
fix: correct license badge to Apache-2.0 and update version in examples
riteshkew Mar 12, 2026
98e0a66
docs: update tagline in README footer
riteshkew Mar 12, 2026
3065029
feat: add automated README stats updater
riteshkew Mar 12, 2026
2a8d853
chore(deps): bump esbuild, @vitest/coverage-v8 and vitest
dependabot[bot] Mar 12, 2026
a4052be
chore(deps): bump devalue from 5.6.3 to 5.6.4 in /docs-site
dependabot[bot] Mar 12, 2026
339c903
docs: add generic scanning documentation and guide
riteshkew Mar 12, 2026
28256d4
chore: update GitHub org URLs from riteshkew to firmislabs
riteshkew Mar 17, 2026
b8464dc
fix: split BOM from zero-width chars in tool-poisoning rules + allow …
riteshkew Mar 17, 2026
3c9c614
chore: gitignore QA reports, tarballs, and generated scan HTML artifacts
riteshkew Mar 17, 2026
cc72394
docs: auto-update README stats
github-actions[bot] Mar 17, 2026
be00999
fix(deps): update devalue to 5.6.4 — fixes prototype pollution (Depen…
riteshkew Mar 17, 2026
091f05f
Merge pull request #4 from Firmislabs/dependabot/npm_and_yarn/docs-si…
riteshkew Mar 17, 2026
1ca8cb6
Merge pull request #3 from Firmislabs/dependabot/npm_and_yarn/multi-6…
riteshkew Mar 17, 2026
3bb25c8
fix(deps): bump rollup to 4.59.0 and minimatch to 3.1.5 — resolves De…
riteshkew Mar 17, 2026
f1b0d67
fix: update branding, stats, package name across docs and README
riteshkew Mar 17, 2026
4d8cd7d
chore: move docs-site to firmis-labs-landing repo
riteshkew Mar 17, 2026
583c4bc
docs: auto-update README stats
github-actions[bot] Mar 17, 2026
1e9f67f
feat: add 15 new rules (242 total) across 4 new threat categories (21…
riteshkew Mar 17, 2026
17f8e99
docs: auto-update README stats
github-actions[bot] Mar 17, 2026
a96df48
chore: bump version to 1.5.0 for 242 rules release
riteshkew Mar 17, 2026
5663126
docs: auto-update README stats
github-actions[bot] Mar 17, 2026
3e31246
fix: correct rule counts in AGENTS.md (227→242) + add FAQ section to …
riteshkew Mar 20, 2026
3bd4b5f
docs: update rule count 242→269, category count to 26
riteshkew Mar 21, 2026
0a25c59
docs: update rule count 209→269, categories 16→26
riteshkew Mar 23, 2026
3fe3729
docs: add UTM tracking to firmislabs.com links in README
riteshkew Mar 24, 2026
c106091
docs: auto-update README stats
github-actions[bot] Mar 24, 2026
73abf2c
security: pin Actions to SHA, add npm provenance, ignore-scripts on n…
riteshkew Mar 25, 2026
63218e8
feat(rules): add 8 tool description social engineering rules (tp-013 …
riteshkew Mar 26, 2026
dd654ee
feat: security layer framing — update messaging across README, AGENTS…
riteshkew Mar 26, 2026
d148f62
docs: auto-update README stats
github-actions[bot] Mar 26, 2026
419d9f1
fix: platform-agnostic framing — remove hardcoded platform counts fro…
riteshkew Mar 26, 2026
ba6ec71
docs: update detection rules count to 316 across 26 categories
riteshkew Mar 28, 2026
e862c53
chore(deps): bump path-to-regexp from 8.3.0 to 8.4.0
dependabot[bot] Mar 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Firmis Scanner Configuration
# Copy to .env.local and fill in your values

# ============================================================================
# Firmis Cloud (Optional)
# ============================================================================
# Get your API key from https://dashboard.firmis.cloud
# Leave empty to use scanner in offline mode (fully functional)

FIRMIS_API_KEY=

# Cloud endpoint (default: production)
# FIRMIS_CLOUD_ENDPOINT=https://api.firmis.cloud

# ============================================================================
# Telemetry (Optional, Opt-in)
# ============================================================================
# Enable anonymous telemetry to contribute to collective threat intelligence
# All data is anonymized - no file paths, code snippets, or identifiers sent

FIRMIS_TELEMETRY_ENABLED=false

# Telemetry endpoint (default: production)
# FIRMIS_TELEMETRY_ENDPOINT=https://telemetry.firmis.cloud

# ============================================================================
# Cache Settings
# ============================================================================
# Cache cloud responses locally for performance

FIRMIS_CACHE_TTL=3600
FIRMIS_CACHE_DIR=~/.firmis/cache

# ============================================================================
# Development / Testing
# ============================================================================
# Use staging endpoints for development

# FIRMIS_CLOUD_ENDPOINT=https://api-staging.firmis.cloud
# FIRMIS_TELEMETRY_ENDPOINT=https://telemetry-staging.firmis.cloud
68 changes: 68 additions & 0 deletions .firmisignore.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Firmis Scanner Ignore File
#
# This file allows you to suppress specific findings from the Firmis Scanner.
# You can place this file in:
# 1. Project root (.firmisignore)
# 2. Home directory (~/.firmis/.firmisignore)
#
# Format:
# - Lines starting with # are comments
# - Blank lines are ignored
# - Rule IDs (e.g., exfil-001, sus-006)
# - File patterns using glob syntax (e.g., **/docs/**, *.md)
# - Rule:pattern combos (e.g., sus-006:**/crypto/**)

# ============================================================
# Examples
# ============================================================

# Ignore specific rules globally
# exfil-001
# sus-006

# Ignore all findings in documentation
# **/docs/**
# **/README.md
# **/*.md

# Ignore all findings in test files
# **/test/**
# **/__tests__/**
# **/*.test.ts
# **/*.spec.ts

# Ignore all findings in examples
# **/examples/**
# **/samples/**

# Ignore specific rules in specific locations
# sus-006:**/crypto-skills/** # Allow crypto patterns in crypto skills
# cred-004:**/test/** # Allow test credentials in test files
# exfil-001:**/examples/** # Allow network calls in examples

# Ignore all findings in vendored/third-party code
# **/node_modules/**
# **/vendor/**
# **/third-party/**

# ============================================================
# Common Use Cases
# ============================================================

# False Positive: Legitimate crypto operations in wallet skills
# sus-006:**/wallet/**
# sus-007:**/wallet/**

# False Positive: Test files with mock credentials
# cred-001:**/test/**
# cred-002:**/test/**
# cred-003:**/test/**
# cred-004:**/test/**

# False Positive: Documentation with example API keys
# cred-001:**/docs/**
# cred-002:**/docs/**

# False Positive: Network calls in legitimate API integration skills
# exfil-001:**/api-integrations/**
# sus-003:**/api-integrations/**
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ What actually happened.
## Environment
- OS: [e.g., macOS 14.0, Ubuntu 22.04]
- Node.js version: [e.g., 20.10.0]
- Firmis Scanner version: [e.g., 1.0.0]
- Firmis version: [e.g., 2.0.1]
- Platform being scanned: [e.g., Claude Skills, MCP Servers]

## Additional Context
Expand Down
19 changes: 11 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ jobs:
node-version: [20, 22]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Install dependencies
run: npm ci
run: npm ci --ignore-scripts

- name: Type check
run: npm run typecheck
Expand All @@ -40,7 +40,7 @@ jobs:
run: npm run build

- name: Upload coverage
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
if: matrix.node-version == 20
with:
files: ./coverage/coverage-final.json
Expand All @@ -50,23 +50,26 @@ jobs:
needs: test
runs-on: ubuntu-latest
if: github.event_name == 'release'
permissions:
contents: read
id-token: write

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 20
registry-url: 'https://registry.npmjs.org'

- name: Install dependencies
run: npm ci
run: npm ci --ignore-scripts

- name: Build
run: npm run build

- name: Publish to npm
run: npm publish
run: npm publish --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
36 changes: 36 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Deploy Docs

on:
push:
branches: [main]
paths:
- 'docs-site/**'
- 'rules/**'
workflow_dispatch:

jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
deployments: write
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20'

- name: Install dependencies
working-directory: docs-site
run: npm ci --ignore-scripts

- name: Build docs
working-directory: docs-site
run: npm run build

- name: Deploy to Cloudflare Pages
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: npx wrangler pages deploy docs-site/dist --project-name=firmis-docs
40 changes: 40 additions & 0 deletions .github/workflows/update-readme.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Update README Stats

on:
push:
branches: [main]
paths:
- 'rules/*.yaml'
- 'package.json'
- 'src/scanner/platforms/**'
workflow_dispatch:

permissions:
contents: write

jobs:
update-readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Update README stats
run: bash scripts/update-readme.sh

- name: Check for changes
id: changes
run: |
if git diff --quiet README.md; then
echo "changed=false" >> "$GITHUB_OUTPUT"
else
echo "changed=true" >> "$GITHUB_OUTPUT"
fi

- name: Commit and push
if: steps.changes.outputs.changed == 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add README.md
git commit -m "docs: auto-update README stats"
git push
17 changes: 15 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,22 @@ npm-debug.log*
.cache/
.firmis/

# Claude Code
.claude/

# Temporary
tmp/
temp/

# Test fixtures (local testing only)
test/fixtures/
# Test fixture secrets (fake credentials for testing — never real)
test/fixtures/**/.env
!test/fixtures/**/.env.example
*.tgz
supabase/.temp/

# QA test artifacts
.qa-reports/

# Generated scan reports
firmis-report-*.html
dashboard/firmis-report-*.html
Loading
Loading