codemore について
CodeMoreは、修正案と検証条件を含む機械可読な検出結果をコーディングエージェントに渡す静的解析ツールです。CLI、MCPサーバー、VS Code拡張機能、GitHub Actionを通じて、エージェントやCIから結果を確認し対応できます。
主な機能
- 01セキュリティとコード品質の問題を検出
- 02ファイルと行単位の位置を報告
- 03修正テンプレートと検証条件を提示
- 04エージェントによる修正生成と検証
- 05外部アナライザーとCIゲートに対応
活用シーン
- 01コーディングエージェントによる検出事項の修正
- 02CIで新たな重大問題をブロック
- 03コードレビュー向けの機械可読な検出結果
- 04ベースラインによる既存問題の管理
MCP 対応
MCPサーバーはscan_project、scan_file、explain_issue、suggest_fix、apply_fix、validate_fixツールを公開し、プロジェクトのスキャン、問題の調査、修正の適用と検証を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| packs | array | いいえ | 指定した pack に限定します(例:["vibe-supabase"])。デフォルト:登録済みのすべての pack。 |
| rootPath | string | はい | プロジェクトルートの絶対パス、またはワークスペース相対パス。 |
| frameworks | array | いいえ | 各ファイルのコンテキストに付与するフレームワークのヒント(例:["supabase","next.js"])。 |
| enableExperimental | boolean | いいえ | lifecycle=experimental のルールを含めます。デフォルトは false(CLI と同じ)です。より網羅的でもノイズの多い検出を行う場合は true に設定してください。v0.2.1 時点で、調整済みカタログはベータ段階です。experimental には、精度調整が保留中のルール(例:core-quality-duplicate-string)が含まれます。 |
詳細
CodeMore
AI エージェントが読み取る静的解析ツール。
AI エージェントはコードをすばやくリリースします。そして、バグもすばやくリリースします。CodeMore はコードをスキャンし、そのコードを書いたエージェントに、正確な修正方法と検証基準を含む機械可読レポートを渡します。エージェントは自らの検出事項を解決します。
ウェブサイト · ドキュメント · ルールカタログ · レポートスキーマ · 変更履歴
npx codemore@latest scan .
ネイティブルール 64 件 · 外部アダプター 8 件 · CLI · MCP サーバー · VS Code 拡張機能 · GitHub Action — すべてのインターフェースでバイト単位まで一致する、ひとつのレポート。
目次
- CodeMore を選ぶ理由
- クイックスタート — CLI · MCP サーバー · VS Code · GitHub Action · ホステッド版
- 検出できる問題
- レポートが製品です
- エージェントによる修正ループ
- 精度を正直に測定
- CodeMore で 検出できない 問題
- アーキテクチャ
- 開発 · コントリビューション · ライセンス
CodeMore を選ぶ理由
AI 支援コーディングによる脆弱性のリリース率は、実測で増加しています。
| 検出事項 | 出典 |
|---|---|
| AI 生成コードの 45% に OWASP Top-10 の脆弱性が含まれる | Veracode 2025/26 |
| スキャンしたバイブコーディング製サイト 1,072 件の 98% に、セキュリティ上の欠陥が 1 件以上あった | Symbiotic |
| 監査した Lovable アプリの 70% で、Supabase RLS が無効のままリリースされた | DEV |
| AI ツールを使ったコミットでは、シークレット漏えい率がベースラインの 2 倍 | GitGuardian SOSS 2026 |
| AI 生成コードに起因する CVE は 月 35 件(1 月の月 6 件から増加) | 2026 年 3 月 |
既存のスキャナー(SonarQube、DeepSource、Snyk)は、ダッシュボードを見る人間のレビュアーを対象にしています。しかし、このコードを書いたのは人間ではありません。そして、コードを書いた LLM は、自分のバグを修正する能力を十分に備えています。レポートが機械による読み取りに適した形式であれば、修正できるのです。
ここが突破口です。CodeMore は、SAST ダッシュボードをもうひとつ追加するものではありません。スキャナーとコーディングエージェントの間で交わされるレポートの契約です。すべての検出事項には、パッチテンプレートを含む suggestedFix と、明示的な verificationCriteria が付属します。「問題があります」だけではなく、「修正できたことを確認する正確な方法はこちらです」と伝えます。
バグを書いたエージェントは、修正コードも書けます。レポートを読み取れるなら。
クイックスタート
CLI
npx codemore@latest scan .
概要がターミナルに出力されます。完全なレポートを標準出力に出すには --json を、ディスクに書き出すには --out codemore-report.json を追加します。各検出事項には、ルールの引用、修正テンプレート、検証基準とともに file:line:column が明記されます。エージェントにパイプして、検出事項が解決される様子をご確認ください。
npm install -g codemore # once — or prefix each command below with `npx codemore@latest`
codemore update # global install pinned an old version? this pulls latest
codemore scan . --fail-on BLOCKER # CI gate: non-zero exit on any BLOCKER
codemore scan . --external-tools ruff,biome # opt in to external tools
codemore scan . --external-tools all # ruff · golangci-lint · clippy · biome · bandit · gitleaks · npm-audit · pip-audit
codemore scan . --format sarif --out codemore.sarif # GitHub code scanning (upload-sarif)
codemore fix . --rule <id> --write # agentic fix loop from the CLI (needs an LLM API key)
codemore baseline create # adopt on an existing repo without drowning in legacy findings
MCP サーバー — Cursor、Claude Code、Codex、Claude Desktop
npx codemore mcp # print config snippet + every client's config path
npx codemore mcp install --client cursor # merge into existing config (backs up first, --dry-run supported)
手動設定スニペット
{
"mcpServers": {
"codemore": {
"command": "npx",
"args": ["-y", "codemore@latest", "serve-mcp"]
}
}
}
公開されるツールは6つです:scan_project · scan_file · explain_issue · suggest_fix · apply_fix · validate_fix。
クライアントごとのセットアップ、正確な設定パス、ハンドシェイクの検証済み証拠(Claude Code、Cursor、Claude Desktop、Codex CLI)については、docs/ide-matrix.md をご覧ください。
VS Code 拡張機能
VS Code Marketplace から CodeMore をインストールするか(拡張機能 → 「CodeMore」を検索 → インストール)、自分で VSIX をビルドします:
npm run vsce:package # builds codemore-<version>.vsix
code --install-extension codemore-<version>.vsix
インライン診断機能を備えています。コードアクションのクイック修正では、エージェント型のループ(計画 → 生成 → 検証 → 再試行、最大3回)を実行します。
GitHub Action
# .github/workflows/codemore.yml
on:
pull_request:
branches: [main]
jobs:
scan:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: abhinavteja123/codemore@v1
with:
fail-on: BLOCKER
PR コメントボットです。コミット済みの .codemore-baseline.json 以降に新たに見つかった問題がある場合にのみ、ビルドを失敗させます。CodeMore + Ruff + Biome + Bandit + Gitleaks + npm-audit + pip-audit + Checkov を連結する、コピーしてそのまま使える包括的なセキュリティゲートは templates/.github/workflows/codemore-security-gate.yml にあります(解説)。
Web Scanner(ホステッド)
codemore.tech にサインインし、公開 GitHub URL を貼り付けるか ZIP をアップロードします。同じレポート、同じフィンガープリントを、インストール不要で利用できます。
検出できる問題
6つのパックにわたる64個のネイティブルールを備え、すべてのルールを仮説ではなく、出典が示された実際のインシデントの種類に対応付けています:
| パック | ルール数 | 主な検出項目 |
|---|---|---|
core-security | 22 | SQLインジェクション(文字列連結)、パストラバーサル、弱い暗号化、安全でないデシリアライゼーション、eval、シェルインジェクション、TLS無効化、ハードコードされたシークレットのパターン、ハードコードされたパスワード(B105クラス)、SSRF、ログ内のシークレット、LLM出力からeval/exec/SQLシンクへの流入、プロンプトインジェクションのシンク、WHERE句のないDB書き込み、存在しないインポート |
core-quality | 21 | 未使用の変数/インポート/エクスポート、循環的複雑度、到達不能な条件分岐、残存するconsole出力/print文、awaitのないasync、到達不能コード、緩い等価比較、as any、非nullアサーションの乱用 |
vibe-frontend | 9 | XSS(dangerouslySetInnerHTML)、認証情報を伴うCORS、レート制限の欠如、Cookieフラグの欠如、ファイルアップロードの検証、入力検証の欠如 — CORS、Cookieフラグ、入力検証はそれぞれTSとPython(Flask/FastAPI)形式に対応 |
vibe-secrets | 4 | 公開環境変数の漏えい(NEXT_PUBLIC_*/VITE_*/REACT_APP_*)、ハードコードされたJWT、MCP設定内のシークレット、CI/CD YAML内のシークレット |
vibe-auth | 5 | BOLA(TS + Python)、セッション/認証チェックの欠如(TS + Python)、認証ロジックの逆転 |
vibe-supabase | 3 | RLSの無効化、RLSの過剰な許可(USING (true))、クライアントへのanon-keyの同梱 |
8つの外部アダプター(デフォルトでは無効。--external-tools でオプトイン):ruff · golangci-lint · clippy · biome · bandit · gitleaks · npm-audit · pip-audit。検出結果には ext:<tool>:<rule-id> の名前空間が付与され、ネイティブルールと衝突しません。バイナリが見つからない場合は、クラッシュせずに警告なしでスキップします。
ウォーカーは .gitignore に隠されたものも検出します。 開発者が漏えいしたシークレットファイルをgitignoreに追加して「隠す」と、ほとんどのスキャナーは検出できなくなります。しかし、ファイルはディスク上やtarball、Dockerイメージ内に残っています。CodeMoreは、gitignore対象であってもシークレットを含みそうなファイル名(.env*、*.pem、*.key、firebase-adminsdk*.json、credentials.json、.npmrc、.pypirc、…)を常にスキャンします。これにより、ほかのツールが警告なく見逃した、本番環境で実際に使われていたOpenAIキー、Google APIキー、Firebase管理者SDKの認証情報が監査で発見されました。--respect-gitignore-fully で対象外にできます。
ルールごとのドキュメント:「docs/rules」 — ルールごとに1ページ、全64ページです。
レポートが製品です
すべてのサーフェスが同じスキーマで安定した codemore-report.json を出力します。リリースごとに test/parity.test.ts で検証されており、タイムスタンプとインスタンス ID を除いて バイト単位で同一 です。
CLI : issues=224 BLOCKER=5 fingerprint=sha256:7f95f2c62e0d3ecea6f23…
MCP : issues=224 BLOCKER=5 fingerprint=sha256:7f95f2c62e0d3ecea6f23…
Daemon : issues=224 BLOCKER=5 fingerprint=sha256:7f95f2c62e0d3ecea6f23…
1つの頭脳、4つの外観。 スキーマが API であり、各サーフェスは相互に置き換え可能です。
レポートの全例 — codemore-report.json v1.0.0
{
"schemaVersion": "1.0.0",
"tool": { "name": "codemore", "version": "0.3.0" },
"project": { "root": ".", "framework": "next.js", "language": "typescript",
"fingerprint": "sha256:7f95f2c62e0d3ecea6f23…" },
"summary": {
"issuesTotal": 42,
"bySeverity": { "BLOCKER": 2, "CRITICAL": 5, "MAJOR": 15, "MINOR": 18, "INFO": 2 },
"byCategory": { "security": 12, "bug": 7, "…": "…" },
"filesAnalyzed": 87,
"linesOfCode": 12450,
"technicalDebtMinutes": 1840
},
"issues": [
{
"id": "vibe-supabase-rls-disabled",
"ruleVersion": "1.2.0",
"instanceId": "01HZ…",
"severity": "BLOCKER",
"confidence": 0.95,
"category": "security",
"title": "Supabase table has no RLS policy",
"evidence": {
"file": "supabase/migrations/001_init.sql",
"line": 14, "column": 1, "endLine": 14, "endColumn": 60,
"snippet": "create table profiles (id uuid primary key, …);",
"matchedPattern": "create-table-without-rls"
},
"whyItMatters": "Public Supabase client can read/write all rows. 70 % of Lovable apps leak data through this.",
"citation": "https://codemore.tech/rules/vibe-supabase-rls-disabled",
"suggestedFix": {
"type": "code-patch",
"instructions": "Add `ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;` plus at least one policy scoped to authenticated users.",
"patchTemplate": "…",
"verificationCriteria": [
"Migration contains ALTER TABLE … ENABLE ROW LEVEL SECURITY",
"At least one CREATE POLICY exists for the table",
"Re-scan no longer reports vibe-supabase-rls-disabled for this file"
]
},
"suppression": {
"available": true,
"directive": "// codemore-ignore: vibe-supabase-rls-disabled",
"scope": "same-line | next-line | file"
}
}
],
"agentInstructions": {
"preamble": "You are fixing issues found by CodeMore. Apply patches one issue at a time. After each, request re-scan via validate_fix.",
"orderingHint": "blockers → criticals → majors",
"doNotTouch": ["node_modules/**", "*.lock", ".env*"],
"stopOn": "first-validator-failure"
},
"meta": {
"rulesEnabled": 64,
"packsLoaded": ["core-security", "core-quality", "vibe-supabase", "…"],
"scanDurationMs": 4321
}
}
スキーマの信頼できる情報源:shared/report/schema.json。互換性を破る変更では schemaVersion のメジャーバージョンを上げ、移行ガイドを公開します。
エージェントによる修正ループ
apply_fix は4段階のループを実行し、検出結果ごとに最大3回再試行します。最初の PASS で終了し、失敗するパッチを黙って残すことはありません。
detect ──► plan ──► generate ──► validate
│
├──► (fail) → re-plan, retry (≤ 3)
└──► (pass) → apply patch · next finding
agenticFixer.ts— オーケストレーター。検出結果、ルールの引用、フレームワークのコンテキストを読み取りますvalidatorHarness.ts— 一時ディレクトリのコピーにパッチを適用し、ルールを再実行して、ファイル単位のテストを再実行し、pass | failと診断結果を返します- LLM プロバイダーのプラグイン:OpenAI · Anthropic · Gemini · ローカル。ワークスペース設定(VS Code)または
CODEMORE_LLM_PROVIDER環境変数(CLI)で設定できます
正直に測定した精度
合成ベンチマークは実態を反映しませんが、実際のコードベースは反映します。すべてのリリースで実際のプロジェクトを対象に監査し、悪い結果も含めて数値を公開します。
2026-07-07 の監査(完全なレポート)— 7つのコードベース(Python アプリ、135万行の TS モノレポ、複数言語を使った Rust、正解データ付きの合成アプリ、セルフスキャン):仕込んだ脆弱性を 100% 検出、本番環境の .env にある実際の OpenAI キーを検出、BLOCKER の真陽性率は約90%、4種類の偽陽性を修正した後にセルフスキャンのノイズを85%削減。
2026-06-12 の監査(完全なレポート)— 実際のコードベース10件で、BLOCKER の集計 真陽性率は約85%。DeepSource の本番環境基準である75%以上を上回っています。
プロジェクト別の結果
| プロジェクト | 検出結果 | BLOCKER | 真陽性率 | 備考 |
|---|---|---|---|---|
| EchoVault | 122 | 10 | 100% | 実際の Supabase RLS の抜け穴 |
| ProofSnap | 134 | 4 | 100% | |
| AImentor | 224 | 5 | 100% | .gitignore によって隠されていた実際の OpenAI キー |
| Hackathonnn | 129 | 3 | 100% | |
| shopsec | 113 | 5 | 100% | |
| Senti | 155 | 8 | 100% | |
| open-design | 8,615 | 101 | 約80% | |
| Gen ai | 63 | 4 | 75% | 実際の Firebase Admin SDK の認証情報 |
| codemore self | 282 | 6 | 17% | 意図的に含めたランディングページのデモデータ |
| 合計(self を除く) | 9,755 | 140 | 約85% |
CI で適用する品質ゲート
- 128個のフィクスチャを使った回帰テストスイートで 真陽性率100%/偽陽性率100% — すべてのルールに、
corpus/rules/<rule-id>/{tp,fp}/以下の真陽性フィクスチャと偽陽性フィクスチャがそれぞれ少なくとも1つあります - ライフサイクルによるゲート管理:ルールは
experimental→beta→stableの段階を経ます。昇格にはフィクスチャのペアに加え、オプトインのテレメトリーによる実環境での偽陽性率の証拠が必要です。精度基準を下回るルールは--enable-experimentalを指定しないと使えないようにするか、信頼度を下げて公開し、エージェントが重要度を低く評価するようにします
| ライフサイクル | デフォルト | 昇格基準 |
|---|---|---|
experimental | デフォルトでは無効 | フィクスチャのペア1組 |
beta | デフォルトで有効 | フィクスチャのペア3組以上 + 14日間の偽陽性率が15%未満 |
stable | デフォルトパックに含まれる | 30日間の偽陽性率が5%未満 + 参照アプリで問題がないこと |
deprecated | 警告を表示し、次のメジャーバージョンで削除 | — |
CodeMore が検出しないこと
意図的に対象外としています。静的解析ではこれらを判断できず、エージェントもソースの差分から自動修正できないためです。ルールは 「エージェントが対処できるものだけをルールとする」 という方針です。
弱いパスワードポリシー · 監査ログの完全性 · ビジネスロジックの欠陥 · 競合状態 · 公開状態の S3/GCS バケット · DAST の検出結果 · MFA の有無。
理由を含む全一覧:docs/limitations.md。これらの検査には、CodeMore と OWASP ZAP、Burp Suite、checkov、または IdP のコンプライアンスダッシュボードを併用してください。
テレメトリー — 明示的なオプトインのみ
デフォルトでは無効です。スキャンごとに --telemetry で有効にします。収集される情報:ツールのバージョン、ハッシュ化されたプロジェクトのフィンガープリント、サーフェス、ルールの発火イベント。**収集しない情報:**ファイルパス、内容、スニペット、証拠テキスト — エンドポイントは Zod の strict() スキーマを適用し、これらのキーを含むペイロードは HTTP 400 で拒否します。ペイロードの上限は 64 KB、フィンガープリントごとのレート制限があり、RLS によってすべての読み取りが拒否されます。
アーキテクチャ
codemore/
├── shared/ ← one brain, shared across all surfaces
│ ├── packs/ ← 64 rule modules across 6 packs
│ ├── rules/ ← registry, lifecycle gating, suppression, AST helpers (TS + Python)
│ └── report/ ← codemore-report.json v1.0.0 schema + types + writer
├── daemon/
│ ├── cli/ ← CLI entry · walker · ignore resolver · baseline diff
│ ├── mcp/ ← MCP server (6 tools)
│ ├── external/ ← 8 opt-in adapters, fail-loud parsers
│ ├── services/ ← agentic fixer · validator harness · scan orchestrator
│ └── llm/ ← OpenAI · Anthropic · Gemini · local provider plug-ins
├── src/ ← VS Code extension (forks daemon, renders diagnostics)
├── web/ ← Next.js: landing · dashboard · docs · /api/telemetry
├── corpus/rules/<id>/{tp,fp}/ ← 64 TP/FP fixture pairs, 1:1 with the rule catalog
├── docs/ ← schema · limitations · security-gate · 64 per-rule pages
└── templates/ ← copy-paste GitHub Action workflows
1 つの頭脳(shared/)、4 つの外装(CLI、MCP、拡張機能、Action)、1 つのレポートスキーマ — スローガンではなく、パリティテストによって一貫性を保っています。
開発
git clone https://github.com/abhinavteja123/codemore
cd codemore
npm ci # postinstall skips binary downloads in dev automatically
npx tsc -p tsconfig.publish.json # type-check the publishable surface
npm run test:unit # unit tests (mocha + ts-node)
npx mocha --require ts-node/register test/parity.test.ts # surface-parity proof
node cli.js scan corpus/rules/vibe-no-rate-limit/tp --json --enable-experimental
cd web && npm ci && npm run dev # landing + dashboard + docs → localhost:3000
VS Code 拡張機能:VS Code で F5 を押すか、npm run watch + code --extensionDevelopmentPath=. を実行します。
コントリビューション
方法は 2 つあります。
- 新しいルール —
CONTRIBUTING-RULES.mdをお読みください。PR ボットはすべての投稿をチェックします。ルールモジュール + TP フィクスチャ(発火すること)+ FP フィクスチャ(発火しないこと)+ ドキュメントページ + パック登録が必要です。ボットが最初のレビュー担当で、ボットのチェック通過後に人間がレビューします。 - その他すべて(CLI、MCP、拡張機能、デーモン、ウェブ、ドキュメント)—
CONTRIBUTING.mdをお読みください。
PR を作成する前に:
npx tsc -p tsconfig.publish.json # type-check
node scripts/validate-rule-pr.js # rule-PR bot equivalent (must report "passed")
node scripts/measure-accuracy.js # corpus regression (must stay 100% TP / 100% FP)
npm run test:unit # full unit suite
誤検知を見つけましたか?ルールの FP レポートを投稿してください — FP レポートはベータ版から安定版への昇格パイプラインに直接反映されます。
セキュリティ上の問題:公開 issue を作成しないでください — GitHub の非公開脆弱性報告フロー(SECURITY.md)をご利用ください。
ロードマップ
- MCP レジストリへの掲載(VS Code Marketplace:公開中)
- デモ動画:実際のバイブコーディング製アプリを開き、スキャンして、レポートを Claude Code に渡し、すべての BLOCKER が解消される様子を確認
- 50 アプリのベンチマーク調査とデータセットの公開 — 公開中:
benchmark/REPORT.md(AI が構築したリポジトリ 50 件のうち 40% に 1 件以上の BLOCKER があり、誤検知を適切にトリアージした後は 24%) - テレメトリーに基づくルールの自動降格 — 稼働中:毎晩
auto-demote-rules.ymlが実行され、ルールの FP 率が 10% を超えるとレビュー用 issue を作成 - JetBrains プラグイン · 言語横断の汚染追跡(研究中)
詳細:docs/roadmap.md。
ライセンス
MIT — LICENSE をご覧ください。CodeMore は最初の行からオープンソースであり、今後もその方針を維持します。差別化の要はレポートの契約であり、門番になることではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。