openai/codex-security

OpenAI's Codex Security CLI and TypeScript SDK for finding, validating, and fixing security vulnerabilities. npm: https://www.npmjs.com/package/@openai/codex-security

TypeScript★ 12,594+643 that day#2 on trending

Analyzed November 13, 2026 at 4822a9c (main) with jscpd v5 in 3.2s. Code duplication stayed at 0.55% across 2 appearances since Nov 12.

C60/100
Project health571,147 lines of code (L)
Duplication86
1.8% in typescript, python, javascript, rust, bash, tsx, powershell, docker, batch
Dead code74
3.3%
Complexity34
77.7%

The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.

0.55%duplicated code · 1,023 of 186,555 lines
44clones in code
567code files of 1,534 scanned
1.85%duplicated over all files · 1,028 clones

The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.

Largest clones in the code

  • 434 lines in 2 placestypescript1,971 tokens
    3export interface ScanManifest {
    4  documentType: "codex-security.scan-manifest";
    5  schemaVersion: "1.0";
    6  scan: {
    7    id: string;
    8    producer: {
    9      name: string;
    10      version: string;
    11      [k: string]: unknown;
    12    };
    

    First 10 of 434 lines.

  • 110 lines in 2 placestypescript522 tokens
    1import { hash } from "node:crypto";
    2import { isAbsolute, posix } from "node:path";
    3import type { Finding } from "./models.js";
    4import { isWindowsUnsafePathComponent } from "./windows-path.js";
    5
    6export class SealedContractError extends Error {
    7  constructor(message: string, options?: ErrorOptions) {
    8    super(message, options);
    9    this.name = new.target.name;
    10  }
    

    First 10 of 110 lines.

  • 54 lines in 2 placestypescript268 tokens
    1import { parse, toNamespacedPath } from "node:path";
    2
    3// SQLite's default win32 VFS allows MAX_PATH * 4 UTF-8 bytes, including room for "-journal".
    4const SQLITE_WINDOWS_MAX_FILENAME_BYTES = 260 * 4 - 8;
    5
    6export function sqliteFilename(path: string): string {
    7  // Ordinary paths also preserve Win32 handling of device names and trailing spaces or dots.
    8  if (
    9    process.platform !== "win32" ||
    10    path.length + 8 < 260 ||
    

    First 10 of 54 lines.

7 more
Largest clones over all files, tests and data included
By format, code only
FormatFilesLinesClonesDuplicated linesDuplication
typescript430138,497278740.63%
python5334,188131150.34%
javascript579,8474340.35%
rust72,194000%
bash181,054000%
tsx1768000%
powershell17000%
By format, all files
FormatFilesLinesClonesDuplicated linesDuplication
typescript895447,2567998,5971.92%
python158102,6011801,7041.66%
yaml747,628152303.02%
json619,591114424.61%
markup3962917017.67%
javascript10516,9837570.34%
markdown14117,7396540.3%
txt48611719.77%
rust82,745000%
bash601,866000%

Trending appearances

DayRankStarsFilesLinesClonesAll filesCodeHealthCommit
Nov 13, 2026#212,594 (+643)1,534609,7881,0281.85%0.55%C 604822a9c
Nov 12, 2026#711,883 (+52)1,529608,7121,0241.84%0.55%C 602911786

Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.