HN 日本語サマリー

← 一覧へ戻る
セキュリティ

OpenAIがCodex Securityをオープンソース化

OpenAI just open-sourced Codex Security (github.com)

550 pointsby bakigul199 コメント

要約

OpenAIは、コードのセキュリティ問題を検出、検証、レビューするためのオープンソースCLIおよびTypeScript SDKであるCodex Securityを公開しました。このツールはNode.jsとPythonを必要とし、ユーザーはOpenAIアカウントまたはAPIキーで認証する必要があります。リポジトリの所有権やスキャン許可の確認、様々なスキャンオプション、エクスポート形式、プリコミットフックなどの機能を提供します。

全文翻訳

Codex Security Codex Securityは、あなたが所有している、または評価する許可を得ているコード内のセキュリティ問題を検出、検証、レビューするためのオープンソースCLIおよびTypeScript SDKです。 注 このパッケージはセマンティックバージョニングに従います。1.0.0より前のマイナーバージョン間では、公開APIが変更される可能性があります。 要件 SDKとCLIはmacOS、Linux、Windowsをサポートし、Node.js 22以降が必要です。スキャンと結果のエクスポートには、Python 3.10以降も必要です。Python 3.10を使用する場合は、tomliパッケージをインストールしてください。パッケージのインストールや--help、--versionの実行にはPythonは必要ありません。 スキャンを実行する前に、OpenAIアカウントでサインインするか、OpenAI APIキーを提供してください。あなたが所有している、または評価する明示的な許可を得ているリポジトリのみをスキャンしてください。 インストールとスキャン npm install @openai/codex-security npx codex-security login npx codex-security scan /path/to/repo すべてのコマンドを表示するには npx codex-security --help を実行し、スキャンオプションを表示するには npx codex-security scan --help を実行してください。 リモートまたはヘッドレスマシンでは、npx codex-security login --device-auth を使用してください。CIやその他の無人スキャンでは、シェル、CIシークレット、またはシークレットマネージャーを使用してOPENAI_API_KEYまたはCODEX_API_KEYを設定してください。Windowsでは、PowerShellで次のようにAPIキーを設定します: $env:OPENAI_API_KEY = "<your-api-key>" npx codex-security scan C:\code\repository APIキーを保存するには、標準入力で渡します: printenv OPENAI_API_KEY | npx codex-security login --with-api-key 保存されているサインインを確認するには npx codex-security login status を使用し、削除するには npx codex-security logout を使用してください。 Codex Securityは既存のファイルベースのCodexサインインを再利用します。Codexがシステムキーリングに認証情報を保存している場合、スキャン前に一度 npx codex-security login を実行してください。環境APIキーは保存されているサインインよりも優先されます。保存されているサインインを使用するには、OPENAI_API_KEYとCODEX_API_KEYの両方を解除してください。 ログインステータスコマンドは、値を出力せずに、保存されているサインインが存在しない場合も含め、効果的な認証情報ソースを報告します。 リポジトリの一部をスキャンするか、機械可読な結果を書き出す: npx codex-security scan /path/to/repo --model gpt-5.6-terra npx codex-security scan /path/to/repo --path src --path tests npx codex-security scan /path/to/repo --knowledge-base /path/to/threat-models --knowledge-base /path/to/architecture.pdf npx codex-security scan /path/to/repo --diff origin/main --json npx codex-security scan /path/to/repo --output-dir /path/outside/repo/results npx codex-security scan /path/to/repo --output-dir /path/outside/repo/results --archive-existing npx codex-security scan /path/to/repo --dry-run npx codex-security scan /path/to/repo --fail-on-severity high npx codex-security install-hook npx codex-security bulk-scan npx codex-security bulk-scan repositories.csv --output-dir /path/outside/repositories/security-scans npx codex-security scans list /path/to/repo npx codex-security scans list --scan-root /path/outside/repo/results npx codex-security scans show SCAN_ID npx codex-security scans rerun SCAN_ID npx codex-security scans match PREVIOUS_SCAN_ID CURRENT_SCAN_ID npx codex-security scans match --all npx codex-security scans compare PREVIOUS_SCAN_ID CURRENT_SCAN_ID npx codex-security export /path/outside/repo/results --export-format sarif --output /path/outside/repo/results.sarif npx codex-security export /path/outside/repo/results --export-format csv --output /path/outside/repo/findings.csv npx codex-security export /path/outside/repo/results --export-format json --output /path/outside/repo/findings.json npx codex-security validate /path/outside/repo/findings.json "Possible SQL injection in src/query.ts:42" npx codex-security patch /path/outside/repo/findings.json "Missing authorization check in src/routes.ts:18" install-hook は、各コミット前にステージングおよびアンステージングされた変更をスキャンします。core.hooksPath を尊重し、既存のフックを置き換えず、高深刻度の検出またはスキャン失敗をブロックします。しきい値を変更するには --fail-on-severity を設定してください。 CLIのバージョンを確認するには npx codex-security --version を、パッケージ、プラグイン、ランタイムのバージョン、デフォルトモデルと推論の労力、および次のスキャンコマンドを確認するには npx codex-security info --json を使用してください。Codexを初期化したりネットワークに接続したりせずに、効果的なモデルと推論の労力を確認するには --dry-run を追加してください。 出力ディレクトリは、スキャンされたディレクトリおよびそれを囲むGitワークツリーの外にある必要があります。macOSおよびLinuxでは、既存の出力ディレクトリは現在のユーザーのみがアクセス可能である必要があります (chmod 700)。 スキャン成果物には、ソースコードの抜粋、脆弱性の詳細、再現手順が含まれる場合があります。これらをリポジトリ、公開された問題レポート、共有場所に入れないでください。SARIFが生成される場合、それは <scan-dir>/exports/results.sarif に書き込まれます。すべてのターゲット、出力、およびランタイムオプションについては、npx codex-security scan --help を参照してください。複数のファイルまたはディレクトリに対して --knowledge-base PATH を繰り返してください。ディレクトリはMarkdown、テキスト、PDF、Word (.docx) ファイルを再帰的に検索します。 gh auth login でサインインしてから、npx codex-security bulk-scan を実行して、過去90日間にプッシュされたGitHubリポジトリを検出してください。アーカイブされたリポジトリとフォークは除外されます。リポジトリリストを検索し、スキャンするリポジトリを選択し、スキャン前に確認してください。プライベートチェックアウトは、グローバルGit設定を変更せずにGitHub CLIのサインインを再利用します。自動化または既存のリポジトリリストの場合は、id、repository、およびfull immutable revisionの列を含むCSVを渡し、--output-dirを指定してください。すべてのオプションについては、npx codex-security bulk-scan --help を参照してください。 CLIは、エージェントフレンドリーな検出と構造化された出力のためにIncurを使用します。コマンドマニフェストについては --llms を、コマンドスキーマについては scan --schema --format json を使用し、mcp add でMCPサーバーを登録し、skills add でエージェントスキルを同期し、シェル補完については completions bash|zsh|fish を使用してください。スキャン結果は --format toon|json|yaml|jsonl および --full-output をサポートします。SDKおよびバンドルされたプラグインメタデータについては info --json を使用してください。MCPは、この読み取り専用メタデータコマンドのみを公開します。MCPトランスポートはアクティブなスキャンをキャンセルできないため、スキャン、認証、エクスポート、検証、パッチ適用はCLI専用のままです。 出力ディレクトリに既に結果が含まれている場合、--archive-existing を追加してください。CLIはそれらを <output-dir>.previous-<timestamp>-<id> に移動し、元のパスの新しい空のディレクトリでスキャンを開始します。ファイルを移動せずに宛先を確認するには --dry-run を追加してください。 スキャンはデフォルトでレポートのみです。完了したスキャンが選択された深刻度以上の検出を含む場合、CIで終了コード1を返すには --fail-on-severity を使用してください。不完全なカバレッジとCLI/ランタイムエラーは終了コード2で終了します。不完全なスキャンでも、利用可能な人間可読またはJSONの結果を標準出力に、カバレッジに関する警告を標準エラー出力に書き込みます。これはレポートモードでも同様です。CIでは、チェックアウトされたリポジトリの外に機械可読な出力を保存し、深刻度ポリシーを適用してください。不完全なカバレッジとランタイムエラーは、依然として非ゼロで終了します: SCAN_ROOT="$(mktemp -d)" npx codex-security scan . --diff origin/main --output-dir "$SCAN_ROOT/results" --json --fail-on-severity high > "$SCAN_ROOT/findings.json" JSONスキャンは、標準エラー出力がターミナルである場合でも、非対話的です。Codexを対話的に実行するコマンド (validate, patch, login, logout) は --json を拒否します。JSON出力が選択されている場合、CSVエクスポートをファイルに書き込みます。 スキャンはデフォルトで、追加の高推論労力を持つgpt-5.6-solを使用します。--model でモデルを切り替えます。他のCodex設定については --codex を使用します: npx codex-security scan . --model gpt-5.6-terra --codex 'model_reasoning_effort="high"' スキャンは、要求されたパス、実際のランキング、ファイルレビュー、検証、および攻撃パスのフェーズを報告します。完了すると、検出の深刻度、カバレッジ、経過時間、利用可能なトークンとワーカーの数、結果ディレクトリ、および次の有用なコマンドが表示されます。進捗状況は標準エラー出力に、JSON結果は標準出力に表示されます。 TypeScript SDKを使用する クライアントを作成し、リポジトリの外にあるプライベートな出力ディレクトリを選択し、スキャンの後にクライアントを閉じます: import { CodexSecurity } from "@openai/codex-security"; const security = new CodexSecurity(); try { const result = await security.run("/path/to/repository", { outputDir: "/path/out