Executar análises de segurança em massa
Descubra repositórios GitHub ou execute análises de segurança retomáveis a partir de um inventário CSV.
Utilize npx @openai/codex-security bulk-scan para rever repositórios numa única
campanha. Descubra repositórios a partir da sua conta pessoal do GitHub ou de uma
organização, ou forneça um CSV que fixe cada repositório numa revisão Git
exata.
Escolher uma origem de repositórios
| Origem | Quando utilizar |
|---|---|
| Descoberta GitHub | Escolha repositórios interativamente na sua conta pessoal do GitHub ou numa organização. |
| Inventário CSV | Execute uma campanha repetível e automatizada em revisões exatas de repositórios. |
Ambos os fluxos de trabalho guardam o progresso, preservam os resultados de cada repositório e permitem retomar uma campanha após uma interrupção.
Descobrir repositórios GitHub
Inicie sessão com a GitHub CLI:
gh auth loginInicie uma análise em massa interativa:
npx @openai/codex-security bulk-scanA CLI orienta-o através destes passos:
- Escolha a sua conta pessoal do GitHub ou uma organização.
- Reveja os repositórios ativos nos últimos 90 dias.
- Pesquise na lista de repositórios e selecione os repositórios a analisar.
- Escolha um diretório para os resultados das análises.
- Reveja os repositórios selecionados e confirme a campanha.
A descoberta exclui repositórios arquivados e forks. A CLI regista o commit exato
do ramo predefinido de cada repositório selecionado em
<output-directory>/repositories.csv. Nenhuma análise é iniciada até confirmar a
seleção.
Para utilizar o GitHub Enterprise Server, comece por iniciar sessão no seu anfitrião GitHub:
gh auth login --hostname github.example.comDefina GH_HOST quando iniciar a descoberta de repositórios:
GH_HOST=github.example.com npx @openai/codex-security bulk-scanA descoberta interativa requer um terminal. Para CI, contentores ou uma lista de repositórios preparada, utilize antes um inventário CSV.
Criar um CSV de repositórios
Crie um CSV com uma linha para cada repositório e revisão fixada:
id,repository,revision,scope,mode
payments,https://github.com/example/payments.git,0123456789abcdef0123456789abcdef01234567,services/api,standard
identity,https://github.com/example/identity.git,fedcba9876543210fedcba9876543210fedcba98,,deepO CSV suporta estas colunas:
| Coluna | Obrigatória | Descrição |
|---|---|---|
id |
Sim | Identificador único do repositório. Utilize letras, números, pontos, hífenes ou sublinhados. |
repository |
Sim | URL HTTPS, URL SSH ou caminho de repositório local. Os caminhos relativos são resolvidos a partir do diretório do CSV. |
revision |
Sim | SHA completo do commit Git, com 40 ou 64 carateres. Não são suportados nomes de ramos, etiquetas nem hashes de commit abreviados. |
scope |
Não | Um diretório relativo ao repositório a analisar. Omita o valor para analisar todo o repositório. |
mode |
Não | standard ou deep. Omita o valor para utilizar o modo selecionado pelo comando. |
Para encontrar o SHA completo do commit de um repositório local, execute:
git -C /path/to/repository rev-parse HEADExecutar uma campanha a partir de um CSV
Indique o CSV e um diretório de saída privado fora dos repositórios:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4--workers controla o número de análises simultâneas de repositórios e a predefinição é
4. Utilize --mode deep para selecionar a análise aprofundada para linhas sem o respetivo
mode. Cada linha do CSV pode continuar a escolher o seu próprio modo de análise e âmbito do repositório.
A CLI obtém cada revisão fixada, analisa o alvo selecionado, regista o resultado e remove a cópia temporária do repositório. Um repositório só é considerado concluído quando a análise tem cobertura completa e existem todos os artefactos de resultados necessários.
Escolher um modelo e o esforço de raciocínio
Por predefinição, as análises em massa utilizam gpt-5.6-sol com o esforço de raciocínio xhigh. Para
escolher outro modelo e esforço para uma campanha CSV:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--model gpt-5.6-terra \
--effort highAs mesmas opções funcionam durante a descoberta interativa de repositórios:
npx @openai/codex-security bulk-scan --model gpt-5.6-terra --effort highOs níveis de esforço suportados são minimal, low, medium, high e xhigh.
Rever os resultados da campanha
O diretório de saída contém a campanha fixada, um registo de resultados apenas de acréscimo e artefactos separados para cada repositório e tentativa:
security-scans/
├── manifest.json
├── results.jsonl
├── checkouts/
└── artifacts/
├── payments/
│ └── attempt-1/
│ ├── scan-manifest.json
│ ├── findings.json
│ ├── coverage.json
│ └── report.md
└── identity/
└── attempt-1/
├── scan-manifest.json
├── findings.json
├── coverage.json
└── report.mdmanifest.jsonregista os repositórios, as revisões fixadas, os âmbitos e os modos de análise da campanha.results.jsonlregista cada tentativa no repositório, o respetivo estado, o diretório de artefactos e quaisquer detalhes disponíveis sobre custos ou erros.report.mdfornece um relatório legível para uma tentativa num repositório.findings.jsonecoverage.jsonregistam as descobertas e o âmbito revisto dessa tentativa.
Exporte uma análise de repositório concluída quando precisar de um resultado portátil:
npx @openai/codex-security export \
/path/outside/repositories/security-scans/artifacts/payments/attempt-1 \
--export-format sarif \
--output /path/outside/repositories/payments.sarifOs resultados podem conter excertos de código-fonte e detalhes de vulnerabilidades. Mantenha o diretório de saída privado, fora dos repositórios analisados e sujeito a uma política de retenção adequada.
Retomar uma campanha
Execute o comando original com o mesmo CSV e diretório de saída:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4A CLI retoma os repositórios que ainda precisam de processamento. Só ignora um repositório concluído quando o recibo correspondente e todos os artefactos de análise necessários ainda existem.
Não altere o inventário de repositórios de um diretório de saída existente. A CLI verifica o manifesto fixado e rejeita uma campanha diferente. Utilize um novo diretório de saída quando alterar repositórios, revisões, âmbitos ou modos de análise.
Repetir após erros nos repositórios
Utilize --max-attempts para repetir a operação num repositório após um erro temporário de obtenção ou de
análise:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--max-attempts 3A predefinição é uma tentativa por repositório. Cada tentativa recebe o seu próprio recibo e diretório de artefactos.
As análises em massa utilizam estes códigos de saída:
| Código de saída | Significado |
|---|---|
0 |
Todos os repositórios foram concluídos com êxito. |
2 |
Não foi possível concluir um repositório, uma análise teve cobertura incompleta ou o comando encontrou um erro de entrada ou de execução. |
130 |
Ctrl-C interrompeu a campanha. |
143 |
SIGTERM terminou a campanha. |
Executar análises em massa no Docker
O repositório Codex Security inclui uma configuração Compose reforçada para campanhas CSV automatizadas num anfitrião Docker Linux. O anfitrião tem de suportar a criação de espaços de nomes de utilizador sem privilégios.
Mantenha o CSV de repositórios, os resultados das análises e o estado da sessão montados em diretórios
persistentes. Forneça as credenciais OpenAI através do ambiente ou de um gestor de
segredos. Para repositórios GitHub privados, forneça GH_TOKEN ou GITHUB_TOKEN
da mesma forma.
Execute a imagem com o CSV e o diretório de saída montados:
docker compose run --rm codex-security \
bulk-scan /input/repositories.csv \
--output-dir /output \
--workers 4Utilize o mesmo CSV e diretório de saída montados para retomar a campanha. Para o
GitHub Enterprise Server, defina CODEX_SECURITY_GIT_HOST como o seu anfitrião GitHub.
Para consultar todas as opções disponíveis, consulte a referência do comando bulk-scan. Para perguntas frequentes sobre a cobertura das análises e as descobertas, consulte as perguntas frequentes da CLI.