Skip to main content

openai-codex-security

Find, validate, and fix security vulnerabilities using OpenAI's Codex Security CLI and TypeScript SDK

설치로 이동

소스 정보

저장소
reason-machines/codex-skills
최근 소스 활동
2026년 7월 30일 00:37
감지된 SKILL.md 언어
영어
스타
0
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
openai-codex-security
description
Find, validate, and fix security vulnerabilities using OpenAI's Codex Security CLI and TypeScript SDK
triggers
["scan my code for security vulnerabilities","use codex security to find issues","run a security scan with openai","analyze code for security problems","fix security vulnerabilities with ai","setup codex security scanning","integrate openai security tools","validate security issues in my codebase"]
# OpenAI Codex Security > Skill by [ara.so](https://ara.so) — Codex Skills collection. OpenAI's Codex Security is a CLI and TypeScript SDK that uses AI to find, validate, and fix security vulnerabilities in your codebase. It supports multiple programming languages and integrates into development workflows and CI/CD pipelines. ## Installation **Requirements:** - Node.js 22.13.0+ (22.x), 24.x, or 26.x - Python 3.10 or later - Access to Codex Security (requires OpenAI account) ```bash npm install @openai/codex-security ``` For global CLI usage: ```bash npm install -g @openai/codex-security ``` ## Authentication ### Interactive Login (Local Development) ```bash npx @openai/codex-security login ``` This stores credentials in Codex's credential backend, including system keyring support for managed devices. ### API Key Authentication (CI/CD) Set one of these environment variables: ```bash export OPENAI_API_KEY=your-api-key-here # or export CODEX_API_KEY=your-api-key-here ``` Environment API keys take precedence and are never stored persistently. ### Choosing Authentication Method ```bash # Use ChatGPT login npx @openai/codex-security scan . --auth chatgpt # Use API key npx @openai/codex-security scan . --auth api-key ``` To make ChatGPT login the default, unset API keys: ```bash unset OPENAI_API_KEY CODEX_API_KEY ``` ## CLI Commands ### Basic Scan Scan current directory: ```bash npx @openai/codex-security scan . ``` Scan specific directory: ```bash npx @openai/codex-security scan /path/to/project ``` ### Advanced Scanning Use specific model and effort level: ```bash npx @openai/codex-security scan . --model gpt-5.6-terra --effort high ``` Scan with custom output: ```bash npx @openai/codex-security scan . --output-format json npx @openai/codex-security scan . --output-file security-report.json ``` ### Login Management ```bash # Login to Codex Security npx @openai/codex-security login # Logout npx @openai/codex-security logout # Check authentication status npx @openai/codex-security whoami ``` ## TypeScript SDK ### Basic Usage ```typescript import { CodexSecurity } from "@openai/codex-security"; async function scanProject() { const security = new CodexSecurity(); try { const result = await security.run("."); console.log("Scan complete!"); console.log("Report path:", result.reportPath); console.log("Vulnerabilities found:", result.vulnerabilities.length); } finally { await security.close(); } } scanProject(); ``` ### Custom Configuration ```typescript import { CodexSecurity } from "@openai/codex-security"; const security = new CodexSecurity({ model: "gpt-5.6-terra", effort: "high", apiKey: process.env.OPENAI_API_KEY, }); const result = await security.run("/path/to/project", { exclude: ["node_modules", "dist", "*.test.ts"], include: ["src/**/*.ts", "lib/**/*.js"], }); console.log(`Found ${result.vulnerabilities.length} vulnerabilities`); for (const vuln of result.vulnerabilities) { console.log(`- ${vuln.severity}: ${vuln.title}`); console.log(` File: ${vuln.file}:${vuln.line}`); console.log(` Description: ${vuln.description}`); } await security.close(); ``` ### Processing Scan Results ```typescript import { CodexSecurity } from "@openai/codex-security"; async function analyzeSecurity() { const security = new CodexSecurity(); const result = await security.run("."); // Filter by severity const critical = result.vulnerabilities.filter( v => v.severity === "critical" ); const high = result.vulnerabilities.filter( v => v.severity === "high" ); console.log(`Critical issues: ${critical.length}`); console.log(`High severity issues: ${high.length}`); // Group by file const byFile = result.vulnerabilities.reduce((acc, vuln) => { acc[vuln.file] = acc[vuln.file] || []; acc[vuln.file].push(vuln); return acc; }, {} as Record<string, typeof result.vulnerabilities>); console.log("\nVulnerabilities by file:"); for (const [file, vulns] of Object.entries(byFile)) { console.log(`${file}: ${vulns.length} issues`); } await security.close(); } analyzeSecurity(); ``` ### Validating Specific Vulnerabilities ```typescript import { CodexSecurity } from "@openai/codex-security"; async function validateVulnerability(vulnId: string) { const security = new CodexSecurity(); const result = await security.run("."); const vuln = result.vulnerabilities.find(v => v.id === vulnId); if (!vuln) { console.log("Vulnerability not found"); await security.close(); return; } console.log("Vulnerability Details:"); console.log(`ID: ${vuln.id}`); console.log(`Severity: ${vuln.severity}`); console.log(`Title: ${vuln.title}`); console.log(`File: ${vuln.file}:${vuln.line}`); console.log(`Description: ${vuln.description}`); if (vuln.recommendation) { console.log(`\nRecommendation: ${vuln.recommendation}`); } if (vuln.codeSnippet) { console.log(`\nCode:\n${vuln.codeSnippet}`); } await security.close(); } ``` ## CI/CD Integration ### GitHub Actions ```yaml name: Security Scan on: push: branches: [main] pull_request: branches: [main] jobs: security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '22' - name: Install Codex Security run: npm install -g @openai/codex-security - name: Run Security Scan env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: codex-security scan . --auth api-key --output-format json --output-file security-report.json - name: Upload Results uses: actions/upload-artifact@v3 with: name: security-report path: security-report.json ``` ### GitLab CI ```yaml security_scan: image: node:22 script: - npm install -g @openai/codex-security - codex-security scan . --auth api-key --output-format json --output-file security-report.json variables: OPENAI_API_KEY: $OPENAI_API_KEY artifacts: reports: security: security-report.json ``` ### Jenkins Pipeline ```groovy pipeline { agent any environment { OPENAI_API_KEY = credentials('openai-api-key') } stages { stage('Security Scan') { steps { sh 'npm install -g @openai/codex-security' sh 'codex-security scan . --auth api-key --output-format json --output-file security-report.json' archiveArtifacts artifacts: 'security-report.json' } } } } ``` ## Configuration ### Environment Variables - `OPENAI_API_KEY` or `CODEX_API_KEY`: API key for authentication - `CODEX_SECURITY_STATE_DIR`: Custom state directory for scan history (useful when repository directory is read-only) ### Scan Configuration Common options: - `--model <model>`: AI model to use (e.g., `gpt-5.6-terra`) - `--effort <level>`: Scan effort level (`low`, `medium`, `high`) - `--auth <method>`: Authentication method (`chatgpt`, `api-key`) - `--output-format <format>`: Output format (`text`, `json`, `sarif`) - `--output-file <path>`: Save report to specific file - `--exclude <patterns>`: Exclude files/directories from scan - `--include <patterns>`: Include only specific files/directories ## Common Patterns ### Pre-commit Hook ```bash #!/bin/bash # .git/hooks/pre-commit npx @openai/codex-security scan . --effort low --auth api-key if [ $? -ne 0 ]; then echo "Security scan failed. Commit aborted." exit 1 fi ``` ### Automated Fix Application ```typescript import { CodexSecurity } from "@openai/codex-security"; import { writeFile } from "fs/promises"; async function autoFix() { const security = new CodexSecurity(); const result = await security.run("."); for (const vuln of result.vulnerabilities) { if (vuln.autoFix && vuln.severity === "critical") { console.log(`Auto-fixing: ${vuln.title} in ${vuln.file}`); // Apply fix (implementation depends on vuln.autoFix structure) } } await security.close(); } ``` ### Progressive Scanning ```typescript import { CodexSecurity } from "@openai/codex-security"; async function progressiveScan() { const security = new CodexSecurity(); // Quick scan first console.log("Running quick scan..."); let result = await security.run(".", { effort: "low" }); if (result.vulnerabilities.some(v => v.severity === "critical")) { console.log("Critical issues found, running deep scan..."); result = await security.run(".", { effort: "high" }); } await security.close(); return result; } ``` ## Troubleshooting ### Authentication Issues **Problem:** "Authentication failed" or "Invalid API key" **Solutions:** - Verify API key is set correctly: `echo $OPENAI_API_KEY` - Try explicit authentication: `npx @openai/codex-security login` - Check API key permissions in OpenAI dashboard - Ensure you have access to Codex Security ### Node.js Version Errors **Problem:** "Unsupported Node.js version" **Solutions:** - Check version: `node --version` - Install compatible version (22.13.0+, 24.x, or 26.x) - Use nvm: `nvm install 22 && nvm use 22` ### Scan History Not Saving **Problem:** Cannot write scan history **Solution:** Set custom state directory: ```bash export CODEX_SECURITY_STATE_DIR=/tmp/codex-security-state npx @openai/codex-security scan . ``` ### Memory Issues on Large Codebases **Problem:** Out of memory errors **Solutions:** - Exclude large directories: `--exclude node_modules,dist,build` - Scan incrementally by directory - Use lower effort level: `--effort low` - Increase Node.js memory: `NODE_OPTIONS=--max-old-space-size=4096` ### False Positives **Problem:** Too many false positive vulnerabilities **Solutions:** - Use higher confidence threshold in SDK options - Review and filter results by severity - Exclude test files and generated code - Report false positives to improve model accuracy ### CI/CD Failures **Problem:** Scans fail in CI/CD pipeline **Solutions:** - Ensure Python 3.10+ is installed in CI environment - Verify API key is properly set as secret - Use `--auth api-key` explicitly in CI - Check CI runner has sufficient memory and CPU - Add timeout handling for long scans
GitHub에서 보기