AI Slop Code RIsk Monitor

ilysenko/codex-desktop-linux

Unofficial ChatGPT desktop app for Linux (formerly the Codex app), built locally from OpenAI’s official macOS app. Includes Chat, Work, and Codex. Packages for Debian/Ubuntu (.deb), Fedora/openSUSE (.rpm), Arch (pacman), Nix/NixOS, and AppImage, with Wayland and X11 support.

4.9 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ilysenko/codex-desktop-linux, a JavaScript project with 3,886 GitHub stars. SynthScan examined 160,271 lines of code across 479 source files, recording 742 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 4.9 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

4.9
Adjusted Signal
4.9
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
3.9K
Stars
JavaScript
Language
160.3K
Lines of Code
479
Files
742
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 20.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 716 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

Are imports declared and package/API names verified? 4 finding(s).

Agent Over-Engineering Ratio 21.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 720 finding(s).

PR Review Velocity Impact 21.4/100 · LOW

Which changes need focused human review? 742 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 4MEDIUM 6LOW 732

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 742 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers698 hits · 720 pts
SeverityFileLineSnippetContext
LOWlinux-features/authenticated-proxy/test.js30function applyPatchTwiceWithoutWarnings(patchFn, source) {CODE
LOWlinux-features/authenticated-proxy/test.js347 "function codexLinuxInstallProxyAuthHandler(e){return e}",CODE
LOWlinux-features/authenticated-proxy/patch.js10function applyAuthenticatedProxyPatch(currentSource) {CODE
LOW⚡linux-features/authenticated-proxy/patch.js21 "function codexLinuxInstallProxyAuthHandler(e){let t=codexLinuxProxyAuthEntry();if(t==null)return;e.app.on(`login`,(CODE
LOW⚡linux-features/authenticated-proxy/patch.js23 "function codexLinuxAttachProxyAuthToRequest(e){let t=codexLinuxProxyAuthEntry();if(t==null||e==null)return;e.on(`loCODE
LOW⚡linux-features/authenticated-proxy/patch.js24 const installHandlerNeedle = "function codexLinuxInstallProxyAuthHandler(";CODE
LOWlinux-features/authenticated-proxy/patch.js52 } else if (!patchedSource.includes("function codexLinuxAttachProxyAuthToRequest(")) {CODE
LOWlinux-features/codex-micro/patch.js60function codexMicroFeatureGateContract(source, expected) {CODE
LOWlinux-features/codex-micro/patch.js102function matchesCodexMicroFeatureGateContract(source, expected) {CODE
LOWlinux-features/codex-micro/patch.js106function applyCodexMicroFeatureGatePatch(source, expected) {CODE
LOWlinux-features/codex-micro/patch.js130function findCodexMicroFeatureGateAssets(extractedDir) {CODE
LOWlinux-features/codex-micro/patch.js198function patchCodexMicroFeatureGateAssets(extractedDir) {CODE
LOWlinux-features/codex-micro/patch.js227function hasCodexMicroServiceContract(source) {CODE
LOWlinux-features/codex-micro/patch.js235function codexMicroTopologyWatcher(source) {CODE
LOWlinux-features/codex-micro/patch.js256function patchCodexMicroHotplugSource(source) {CODE
LOWlinux-features/codex-micro/patch.js316function applyCodexMicroHotplugPatch(source) {CODE
LOWlinux-features/codex-micro/patch.js323function findCodexMicroServiceBundle(extractedDir) {CODE
LOWlinux-features/filesystem-root-follow-ups/patch.js30function applyFilesystemRootFollowUpsPatch(source) {CODE
LOW⚡linux-features/copilot-reasoning-effort/test.js40function retiredCopilotReasoningEffortSettingsFixture() {CODE
LOW⚡linux-features/copilot-reasoning-effort/test.js47function currentCopilotReasoningEffortSettingsFixture() {CODE
LOW⚡linux-features/copilot-reasoning-effort/test.js54function currentFilteredCopilotReasoningEffortModelListFixture() {CODE
LOW⚡linux-features/copilot-reasoning-effort/test.js58function currentCopilotReasoningEffortUiFixture() {CODE
LOW⚡linux-features/copilot-reasoning-effort/test.js67function retiredCopilotReasoningEffortUiFixture() {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js7function currentCopilotWriterRegex() {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js15function matchesCopilotReasoningEffortSettingsContract(source) {CODE
LOW⚡linux-features/copilot-reasoning-effort/patch.js27function matchesCopilotReasoningEffortModelListContract(source) {CODE
LOW⚡linux-features/copilot-reasoning-effort/patch.js36function matchesCopilotReasoningEffortUiContract(source) {CODE
LOW⚡linux-features/copilot-reasoning-effort/patch.js45function findCompiledNamedFunctionOwner(source, index) {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js65function analyzeCompiledCopilotReasoningEffortUiContract(source) {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js172function analyzeCopilotReasoningEffortUiContract(source) {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js180function applyCopilotReasoningEffortSettingsPatch(currentSource) {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js246function applyCopilotReasoningEffortModelListPatch(currentSource) {CODE
LOWlinux-features/copilot-reasoning-effort/patch.js270function applyCopilotReasoningEffortUiPatch(currentSource) {CODE
LOWlinux-features/chronicle-skysight/test.js35function retiredChronicleMainFixture() {CODE
LOWlinux-features/chronicle-skysight/test.js51function currentChronicleMainFixture() {CODE
LOW⚡linux-features/chronicle-skysight/patch.js34function recordReplayRuntimeHelperSource({ childProcessVar, fsVar, pathVar }) {CODE
LOW⚡linux-features/chronicle-skysight/patch.js35 return `function codexLinuxRecordReplayString(e){return typeof e==="string"&&e.trim().length>0?e.trim():null}CODE
LOW⚡linux-features/chronicle-skysight/patch.js36function codexLinuxRecordReplayBin(){let e=codexLinuxRecordReplayString(process.env.CODEX_RECORD_REPLAY_LINUX_BIN);if(e)CODE
LOW⚡linux-features/chronicle-skysight/patch.js37function codexLinuxRecordReplayParse(e){let t=String(e||"").trim();if(!t)return null;try{return JSON.parse(t)}catch{retuCODE
LOW⚡linux-features/chronicle-skysight/patch.js38function codexLinuxRecordReplayRun(e,t){let n=codexLinuxRecordReplayBin();return new Promise(r=>{${childProcessVar}.execCODE
LOW⚡linux-features/chronicle-skysight/patch.js42function chronicleSkysightHelperSource() {CODE
LOW⚡linux-features/chronicle-skysight/patch.js43 return `function codexLinuxChronicleUpstreamStatus(e){let t=e?.json&&typeof e.json==="object"?e.json:null;if(!e?.ok||tCODE
LOW⚡linux-features/chronicle-skysight/patch.js44async function codexLinuxChronicleRequest({method:e,params:t}={}){let n,r=5000;if(e==="skysightStatus")n=["skysight","stCODE
LOW⚡linux-features/chronicle-skysight/patch.js45function codexLinuxChronicleControlStateFromSkysight(e){let t=e?.json&&typeof e.json==="object"?e.json:null;if(!e?.ok&&tCODE
LOW⚡linux-features/chronicle-skysight/patch.js46async function codexLinuxChronicleSidecarControlStateAsync(){return codexLinuxChronicleControlStateFromSkysight(await coCODE
LOW⚡linux-features/chronicle-skysight/patch.js47function codexLinuxChronicleSummaryAgentArgs(e){return e===!0?["--summary-agent","enabled"]:e===!1?["--summary-agent","dCODE
LOW⚡linux-features/chronicle-skysight/patch.js48async function codexLinuxChronicleEnsureSidecarRunning(e,u,l){let t=await codexLinuxRecordReplayRun(["skysight","status"CODE
LOW⚡linux-features/chronicle-skysight/patch.js49async function codexLinuxChronicleToggleSidecar(){let e=await codexLinuxRecordReplayRun(["skysight","status"],5000),t=e?CODE
LOW⚡linux-features/chronicle-skysight/patch.js96function chronicleControllerInitMatches(source, patched) {CODE
LOW⚡linux-features/chronicle-skysight/patch.js103function chronicleArchiveDependencyMatches(source, patched) {CODE
LOW⚡linux-features/chronicle-skysight/patch.js113function chronicleControllerGetterMatches(source, patched) {CODE
LOW⚡linux-features/chronicle-skysight/patch.js120function chronicleServiceGateMatches(source) {CODE
LOWlinux-features/chronicle-skysight/patch.js18function chronicleSkysightBridgeSource() {CODE
LOWlinux-features/chronicle-skysight/patch.js61function chronicleControllerClassMatches(source) {CODE
LOWlinux-features/chronicle-skysight/patch.js78function chronicleServiceClassMatches(source) {CODE
LOWlinux-features/chronicle-skysight/patch.js165function chronicleControllerContract(source) {CODE
LOWlinux-features/chronicle-skysight/patch.js191 const helperMarkerCount = countOccurrences(source, "function codexLinuxChronicleRequest(");CODE
LOWlinux-features/chronicle-skysight/patch.js222function applyChronicleSkysightMainBridgePatch(currentSource) {CODE
LOWlinux-features/remote-control-ui/patch.js11function applyRemoteConnectionsVisibilityPatch(source) {CODE
LOWlinux-features/remote-control-ui/patch.js27function applyRemoteControlConnectionsVisibilityPatch(source) {CODE
638 more matches not shown…
Excessive Try-Catch Wrapping16 hits · 19 pts
SeverityFileLineSnippetContext
LOWtests/webview_probe_equivalence.sh70except Exception:CODE
LOWlinux-features/read-aloud/bin/kokoro_stdin.py97 except Exception as exc:CODE
LOWscripts/feature-picker.py79 except Exception as exc:CODE
LOW⚡scripts/feature-picker.py130 except Exception as exc:CODE
LOW⚡scripts/feature-picker.py143 except Exception as exc:CODE
LOWscripts/feature-picker.py1021 except Exception as exc:CODE
LOWscripts/feature-picker.py1075 except Exception:CODE
LOWscripts/feature-picker.py1112 except Exception as exc:CODE
MEDIUMscripts/feature-picker.py1065def gtk_probe() -> int:CODE
LOWscripts/bootstrap-wizard.sh405except Exception:CODE
LOWscripts/bootstrap-wizard.sh648 except Exception as exc:CODE
MEDIUMscripts/bootstrap-wizard.sh643def read_json(path, label):CODE
LOWscripts/lib/candidate-promotion.py172 except Exception as error:CODE
LOWscripts/lib/candidate-promotion.py175 except Exception as cleanup_error:CODE
LOWscripts/lib/candidate-promotion.py354 except Exception as error: # noqa: BLE001 - CLI should report a concise durable-operation error.CODE
LOWrecord-replay-linux/src/ocr.rs43except Exception as exc:CODE
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHscripts/lib/candidate-promotion.py63except FileNotFoundError:CODE
HIGHscripts/lib/candidate-promotion.py90except FileNotFoundError:CODE
HIGHscripts/lib/candidate-promotion.py43except FileNotFoundError:CODE
Over-Commented Block14 hits · 14 pts
SeverityFileLineSnippetContext
LOWcomputer-use-linux/src/atspi_tree.rs621 hydrate_session_bus_env();COMMENT
LOWcomputer-use-linux/src/server.rs2641 #[serde(default)]COMMENT
LOWcomputer-use-linux/src/server.rs2661 #[serde(default)]COMMENT
LOWcomputer-use-linux/src/server.rs2681 /// Maximum returned screenshot width in pixels (default 1920, hard-capped).COMMENT
LOWcomputer-use-linux/src/server.rs2741 #[serde(default)]COMMENT
LOWcomputer-use-linux/src/server.rs2921 button: Option<String>,COMMENT
LOWcomputer-use-linux/src/server.rs3041 x: Option<i32>,COMMENT
LOWcomputer-use-linux/src/abs_pointer.rs1//! Direct uinput **absolute** pointer.COMMENT
LOWcomputer-use-linux/src/x11_display.rs1//! Minimal X11 protocol client for native X11 sessions.COMMENT
LOWcomputer-use-linux/src/remote_desktop.rs641 notify_pointer_axis_discrete(&proxy, &session.session_handle, axis, steps).awaitCOMMENT
LOWcomputer-use-linux/src/windowing/backends/x11.rs1//! Generic X11 / EWMH window backend.COMMENT
LOWtests/webview_probe_equivalence.sh1#!/usr/bin/env bashCOMMENT
LOWlinux-features/node-repl-reaper/reaper.sh1#!/bin/bashCOMMENT
LOWscripts/patches/strategy-telemetry.js1"use strict";COMMENT
Decorative Section Separators3 hits · 7 pts
SeverityFileLineSnippetContext
MEDIUMtests/webview_probe_equivalence.sh78# ─── New implementation: extracted from the live template ──────────────────COMMENT
MEDIUMtests/webview_probe_equivalence.sh199# ─── Fixture server ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/webview_probe_equivalence.sh332# ─── Scenario runner ───────────────────────────────────────────────────────STRING
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHlinux-features/global-dictation-gnome/test.js236 print('REAL_DBUS_OK: uint32=1; async caller denied; events=0; name released; object unexported');CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM⚡linux-features/agent-workspace/patch.js40const AGENT_WORKSPACE_BRIDGE_SOURCE_TEMPLATE = "\"linux-agent-workspace-pick-app\":async()=>{let __codexElectron;try{__cCODE
Unused Imports3 hits · 3 pts
SeverityFileLineSnippetContext
LOWlinux-features/read-aloud/bin/kokoro_stdin.py4CODE
LOWscripts/feature-picker.py4CODE
LOWscripts/lib/candidate-promotion.py4CODE
Deep Nesting3 hits · 3 pts
SeverityFileLineSnippetContext
LOWlinux-features/read-aloud/bin/kokoro_stdin.py38CODE
LOWscripts/feature-picker.py451CODE
LOWscripts/feature-picker.py680CODE