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
آخر نشاط في المصدر
٣٠ يوليو ٢٠٢٦ في ٠٠:٣٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
١

خيارات التثبيت

يُحدَّد 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