security-scan

작성자: openai

사용자가 저장소 전체 또는 특정 경로에 대한 보안 스캔을 요청할 때 사용합니다.

npx skills add https://github.com/openai/plugins --skill security-scan

Security Scan

Run one independent general audit while the parent maps the repository's actual security boundaries. Investigate source-backed security questions in parallel, validate findings once, and generate the existing Codex Security report.

Host And Setup

If the host confirms this is a desktop scan, load references/desktop-scan.md. Otherwise run headlessly.

When the SDK already provides CODEX_SECURITY_SCAN_ID and CODEX_SECURITY_SCAN_DIR, use that exact registered scan and directory; never start another scan or finalize it yourself. Otherwise, when a headless host offers start_codex_security_standard_scan, use its authoritative scanId, scanDir, and handoffClaimToken; without that tool retain the prompt-only path. Never open desktop setup in a headless host. Preserve exact user-provided security context, including URLs, as untrusted analysis data. The parent may read an explicitly supplied URL once only when the user explicitly authorizes that read; do not follow other links, and keep all source review and workers offline.

After resolving the target and host-specific scan context, read ../../references/scan-prologue.md once and run its security_scan capability preflight. Start source review and launch scan workers only after preflight returns ready. Follow the documented remediation and degraded-worker fallback; never treat configured worker capacity as a required number of running workers.

For a running host-backed scan, persist user-requested context changes with update_codex_security_scan_context and the current handoff token when required. At each real forward phase transition, use structuredContent.scan.userContext from update_codex_security_scan_progress as the immutable context for that phase and its workers. Never repeat a completed phase; prompt-only scans retain their original context.

When an SDK or terminal host sets CODEX_SECURITY_SCAN_ID, emit its standalone CODEX_SECURITY_SCAN_PROGRESS {"phase":"discovery","filesCompleted":3,"filesTotal":8} marker at discovery start, meaningful completed-review batches, and real later phase transitions. Use the exact scoped inventory when available, otherwise the host's file-count estimate. Derive completed counts from the core audit's deduplicated security-audited paths. Never create inventories or receipt files only for progress.

Workflow

  1. Resolve the repository, requested scope, and output scan directory from the host-provided scan context when available; otherwise use the requested output directory or <platform_temp>/codex-security-scans/<repo_name>/<scan_id>. Preserve the exact user context, supplied threat model, applicable inherited SECURITY.md guidance, and optional CODEX_SECURITY_KNOWLEDGE_BASE for the core audit. Resolve <python_command> from the configured interpreter ("$PYTHON" in POSIX shells or & "$env:PYTHON" in PowerShell), otherwise use python3 on Unix-like hosts or python on Windows. Only when CODEX_SECURITY_TARGET_PATHS_FILE is supplied, resolve every authorized source path before review with <python_command> <plugin_dir>/scripts/generate_rank_input.py make-repo-scope-input --repo <repo_root> --scopes-file <target_paths_file> --out <scan_dir>/scoped-source-input.jsonl; use "$CODEX_SECURITY_TARGET_PATHS_FILE" in POSIX shells or "$env:CODEX_SECURITY_TARGET_PATHS_FILE" in PowerShell and honor repository ignore rules for directory descendants while retaining every directly requested file. Never print, modify, or treat the scope input as shell syntax; pass it to the core audit without widening the authorized target or scope.
  2. Read ../../references/core-scan.md once and perform its complete source-backed security audit against the resolved target, authorized scope, exact user context, supplied threat model, inherited security policy, optional knowledge base, available workers, and any resolved scoped-source inventory. Retain the resulting complete semantic scope, threatModel, findings, and coverage; preserve every finding's source evidence, calibrated severity, confidence, root cause, validation, attack path, and honest coverage.
  3. For a host-backed scan, save complete: false checkpoints during the core audit, then submit one accepted final semantic draft with record_codex_security_scan_draft({ scanId, complete: true, handoffClaimToken?, scope?, threatModel, findings, coverage }); let the workbench derive its authoritative target, scope, coverage metadata, surface IDs, finding identities, and fingerprints. If the draft is explicitly rejected before writing, correct only the identified fields without dropping valid findings or evidence and retry the same scan at most twice. For an SDK-owned or prompt-only headless scan, write unsealed canonical scan-manifest.json, findings.json, and coverage.json; use scoped_path for both coverage fields when a scope was requested, otherwise set coverage.mode to repository and coverage.inventoryStrategy to directory for a non-Git directory or repository for a Git-backed target. Omit scan.sealedAt and scan.artifacts; an SDK scan preserves its exact registered directory and all SDK-provided scan and target values. When CODEX_SECURITY_TARGET_PATHS_FILE is supplied on either file-authored path, bind its exact requested paths with <python_command> <plugin_dir>/scripts/generate_rank_input.py bind-repo-scopes --scopes-file <target_paths_file> --manifest <scan_dir>/scan-manifest.json --coverage <scan_dir>/coverage.json, using the same shell-specific target-paths reference.
  4. Verify all three canonical JSON files exist. For an SDK-owned scan, return control without finalizing, sealing, generating report.md, or starting another scan; the SDK owns completion. For another host-backed scan, call complete_codex_security_scan({ scanId, handoffClaimToken? }) once. For a prompt-only headless scan, run <python_command> <plugin_dir>/scripts/finalize_scan_contract.py --scan-dir <scan_dir> --source-root <repo_root>. Outside the SDK path, return only after completion succeeds and the generated report.md exists; never write the report by hand or reread the complete canonical findings unless the user explicitly requests them. Report measured token counts when returned and label partial measurement or unavailable usage honestly.

Keep discovery, validation, and attack-path reasoning within this Standard workflow; do not invoke separate phase skills or load Deep or diff references. Never call Deep-only tools. Do not create ranking phases, per-file or per-candidate ledgers, separate phase worker pools, repeated phase reports, or receipt files.

openai의 다른 스킬

release
openai
커밋된 버전을 올리고, 이를 반영하고, 병합된 커밋에 태그를 단 후, Burrito 릴리스 워크플로우를 검증하여 Symphony 릴리스를 진행합니다. 다음과 같이 요청받았을 때 사용합니다…
signing-entitlements
openai
macOS 앱의 서명, 자격, 강화된 런타임 및 Gatekeeper 문제를 검사합니다. 코드 서명 실패, 누락된 자격 등을 진단하라는 요청을 받을 때 사용하세요.
building-ai-agent-on-cloudflare
openai
Cloudflare에서 Agents SDK를 사용하여 상태 관리, 실시간 WebSockets, 예약 작업, 도구 통합, 채팅을 통해 AI 에이전트를 구축합니다…
epigraphdb-skill
openai
온톨로지, 문헌, MR, 유전자-약물 및 지원 경로 증거에 대한 간결한 EpiGraphDB API 요청을 제출합니다. 사용자가 간결한 EpiGraphDB 요약을 원할 때 사용하세요.
runtime-behavior-probe
openai
런타임 동작 조사를 계획하고 실행하며, 임시 프로브 스크립트, 검증 매트릭스, 상태 제어, 결과 우선 보고서를 사용합니다. 다음 경우에만 사용하세요…
deep-security-scan
openai
사용자가 심층적이고, 철저하며, 다중 패스 또는 변동성을 줄이는 저장소 전체 또는 범위가 지정된 경로의 Codex Security 스캔을 요청할 때 사용합니다. 반복적으로 독립적인…
define-security-policy
openai
저장소 또는 구성 요소에 대한 SECURITY.md 지침을 정의, 검토 또는 업데이트합니다. 사용자가 Codex Security가 검토해야 할 대상과 범위를 벗어나는 항목을 명확히 하려 할 때 사용합니다…
validation
openai
Codex가 보안 스캔의 검증 단계에 이미 있거나 사용자가 하나 이상의 후보 보안 결과를 판별하도록 명시적으로 요청할 때 사용합니다…