Linux Patch Management & Automation Platform
This report presents the forensic synthetic code analysis of PatchMon/PatchMon, a Go project with 3,230 GitHub stars. SynthScan v2.0 examined 217,976 lines of code across 627 source files, recording 431 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 3.9 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 431 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | setup.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | setup.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | setup.sh | 8 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 18 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 22 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 24 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 30 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 32 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 40 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 42 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 55 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 57 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 62 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 64 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 144 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 146 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 152 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 154 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 171 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 173 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 184 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 186 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 263 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 265 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 277 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 279 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 288 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 290 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 299 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 301 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 314 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 316 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 325 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 327 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 355 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | setup-docker.sh | 357 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | setup-docker.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM | setup-docker.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM | setup-docker.sh | 79 | # ============================================================================= | COMMENT |
| MEDIUM | setup-docker.sh | 81 | # ============================================================================= | COMMENT |
| MEDIUM | tools/migrate1-4-2_to_2-0-0.sh | 16 | # ── 1. Back up existing files ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/migrate1-4-2_to_2-0-0.sh | 38 | # ── 2. Download new 2.0.0 files ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/migrate1-4-2_to_2-0-0.sh | 54 | # ── 3. Extract inline values from the old docker-compose.yml ────────────────── | COMMENT |
| MEDIUM | tools/migrate1-4-2_to_2-0-0.sh | 90 | # ── 4. Carry forward values into the new .env ───────────────────────────────── | COMMENT |
| MEDIUM | tools/migrate1-4-2_to_2-0-0.sh | 104 | # ── CORS_ORIGINS → CORS_ORIGIN merge ────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/migrate1-4-2_to_2-0-0.sh | 268 | # ── 6. Done ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 279 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 281 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 290 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 292 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 589 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 591 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 597 | # ======================================== | COMMENT |
| MEDIUM⚡ | tools/diagnostics.sh | 599 | # ======================================== | COMMENT |
| MEDIUM | tools/diagnostics.sh | 191 | # ======================================== | COMMENT |
| MEDIUM | tools/diagnostics.sh | 193 | # ======================================== | COMMENT |
| MEDIUM | tools/diagnostics.sh | 217 | # ======================================== | COMMENT |
| MEDIUM | tools/diagnostics.sh | 219 | # ======================================== | COMMENT |
| MEDIUM | tools/diagnostics.sh | 241 | # ======================================== | COMMENT |
| MEDIUM | tools/diagnostics.sh | 243 | # ======================================== | COMMENT |
| 54 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | setup-docker.sh | 153 | # Step 1: Check if PatchMon is already installed | COMMENT |
| LOW⚡ | setup-docker.sh | 172 | # Step 2: Detect OS | COMMENT |
| LOW⚡ | setup-docker.sh | 185 | # Step 3: Check / Install Docker Engine | COMMENT |
| LOW⚡ | setup-docker.sh | 264 | # Step 4: Check Docker Compose | COMMENT |
| LOW⚡ | setup-docker.sh | 278 | # Step 5: Create PatchMon directory | COMMENT |
| LOW⚡ | setup-docker.sh | 289 | # Step 6: Download compose file and env template | COMMENT |
| LOW⚡ | setup-docker.sh | 300 | # Step 7: Run the env setup script (generates secrets, configures URL) | COMMENT |
| LOW⚡ | setup-docker.sh | 315 | # Step 8: Pull images | COMMENT |
| LOW⚡ | setup-docker.sh | 326 | # Step 9: Start PatchMon | COMMENT |
| LOW⚡ | setup-docker.sh | 356 | # Step 10: Summary | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 688 | // Step 1: Detect OS | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 707 | // Step 2: Install OpenSCAP packages | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 746 | // Step 3: Verify installation and SSG content | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 808 | // Step 4: Docker Bench (if docker enabled) | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 848 | // Step 5: Complete | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 2564 | // Step 1: WUA - install approved OS/KB updates | COMMENT |
| LOW⚡ | agent-source-code/cmd/patchmon-agent/commands/serve.go | 2585 | // Step 2: WinGet - upgrade all applications | COMMENT |
| LOW⚡ | agent-source-code/cmd/patchmon-agent/commands/serve.go | 2595 | // Step 3: report reboot status | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 74 | # Step 1: Stop systemd/OpenRC service if it exists | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 222 | # Step 2: Remove crontab entries | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 232 | # Step 3: Remove agent binaries and scripts | COMMENT |
| LOW | agents/patchmon_remove.sh | 270 | # Step 4: Remove configuration directory and files | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 290 | # Step 5: Remove log files | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 300 | # Step 6: Clean up backup files | COMMENT |
| LOW | agents/patchmon_remove.sh | 398 | # Step 7: Final verification | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 497 | # Step 1: Handle existing configuration directory | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 546 | # Step 2: Create configuration files | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 614 | # Step 3: Download the PatchMon agent binary using API credentials | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 670 | # Step 4: Test the configuration | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 678 | # Step 5: Setup service for WebSocket connection | COMMENT |
| LOW | docs/patchmon-admin-guide.md | 439 | ### Step 1: Choose OS | COMMENT |
| LOW | docs/patchmon-admin-guide.md | 451 | ### Step 2: Host Details | COMMENT |
| LOW | docs/patchmon-admin-guide.md | 478 | ### Step 3: Copy the Install Command | COMMENT |
| LOW | docs/patchmon-admin-guide.md | 512 | ### Step 4: Waiting for Connection | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 63 | ### Step 1: Find your callback URL | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 73 | ### Step 2: Create a Discord application | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 90 | ### Step 3: Configure PatchMon | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 102 | ### Step 4: Test | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 173 | ### Step 1: Create a Discord incoming webhook | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 186 | ### Step 2: Add the webhook to PatchMon | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 200 | ### Step 3: Route alerts to the destination | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 371 | #### Step 1: Create a GetHomepage API key | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 382 | #### Step 2: Copy the credentials | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 393 | #### Step 3: Configure GetHomepage | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 656 | #### Step 1: Find out your top 3 operating systems | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 677 | #### Step 2: Add the counts to the widget, using the names as labels | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 691 | #### Step 3: Restart GetHomepage | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 837 | # Step 1: encode | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 840 | # Step 2: test | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 1417 | #### Step 1: Create Auto-Enrollment Token | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 1454 | #### Step 2: Prepare Proxmox Host | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 1499 | #### Step 3: Test with Dry Run | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 1519 | #### Step 4: Run Actual Enrollment | COMMENT |
| LOW | docs/patchmon-api-integrations-guide.md | 1531 | #### Step 5: Verify in PatchMon | COMMENT |
| LOW⚡ | docs/patchmon-operator-guide.md | 3824 | # Step 1: Check service status | COMMENT |
| LOW⚡ | docs/patchmon-operator-guide.md | 3827 | # Step 2: Check recent logs for errors | COMMENT |
| LOW⚡ | docs/patchmon-operator-guide.md | 3832 | # Step 3: Run diagnostics for full picture | COMMENT |
| LOW⚡ | docs/patchmon-operator-guide.md | 3835 | # Step 4: Test connectivity explicitly | COMMENT |
| LOW⚡ | docs/patchmon-operator-guide.md | 3838 | # Step 5: If needed, restart with debug logging temporarily | COMMENT |
| LOW | docs/patchmon-operator-guide.md | 1308 | ### Step 1: Create Admin Account | COMMENT |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup-docker.sh | 1 | #!/bin/bash | COMMENT |
| LOW | docker/setup-env.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/build.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docker/docker-compose.yml | 1 | # ============================================================================= | COMMENT |
| LOW | frontend/src/utils/hostStatus.js | 1 | // Reporting-state derivation shared by the Hosts table, the Reporting filter | COMMENT |
| LOW | frontend/src/components/PatchWizard.jsx | 141 | isPatchAll || isApprove || lockPackages || (packageNames?.length || 0) <= 1; | COMMENT |
| LOW | frontend/src/components/PatchWizard.jsx | 161 | // Build the list of enabled steps from props. We use string IDs so the | COMMENT |
| LOW | frontend/src/components/HostStatusPills.jsx | 161 | tooltip={tooltip} | COMMENT |
| LOW | frontend/src/pages/Billing.jsx | 741 | </button> | COMMENT |
| LOW | frontend/src/pages/Login.jsx | 141 | fetchOidcConfig(); | COMMENT |
| LOW | …rce-code/cmd/patchmon-agent/commands/version_update.go | 841 | if err := os.MkdirAll("/etc/patchmon", 0700); err != nil { | COMMENT |
| LOW | …rce-code/cmd/patchmon-agent/commands/version_update.go | 941 | // os.Exit never returns, but we need this for code flow | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 301 | case <-effectiveStopCh: | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/report.go | 541 | } | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/report.go | 561 | } | COMMENT |
| LOW | agent-source-code/internal/config/config.go | 441 | return writeConfigAtomically(configViper, m.configFile) | COMMENT |
| LOW | agent-source-code/internal/config/transient_windows.go | 1 | //go:build windows | COMMENT |
| LOW | agent-source-code/internal/utils/offset.go | 1 | // Package utils provides utility functions for common operations | COMMENT |
| LOW | agent-source-code/internal/textsan/textsan.go | 1 | // Package textsan normalises text collected from the host before the agent | COMMENT |
| LOW | agent-source-code/internal/system/reboot.go | 281 | // hasVersionCore reports whether a release string carries a numeric version at | COMMENT |
| LOW | …rce-code/internal/packages/windows_integration_test.go | 21 | // customer's machine. These tests are the only thing that executes those | COMMENT |
| LOW | agent-source-code/internal/packages/apt.go | 241 | } | COMMENT |
| LOW | agent-source-code/internal/packages/apt.go | 381 | // Inst linux-generic [6.8.0-136.136] (6.8.0-137.137 Ubuntu:24.04/noble-updates [amd64]) [] | COMMENT |
| LOW | agent-source-code/internal/packages/apt_test.go | 101 | assert.Equal(t, len(tt.expected), len(result)) | COMMENT |
| LOW | agent-source-code/internal/winexec/powershell.go | 1 | // Package winexec centralises how the agent shells out to Windows PowerShell. | COMMENT |
| LOW | agent-source-code/internal/pkgversion/version.go | 1 | // Package pkgversion provides version information for the agent | COMMENT |
| LOW | agents/patchmon_remove.sh | 1 | #!/bin/sh | COMMENT |
| LOW | agents/direct_host_auto_enroll.sh | 1 | #!/bin/sh | COMMENT |
| LOW | agents/proxmox_auto_enroll.sh | 1 | #!/bin/bash | COMMENT |
| LOW | docs/patchmon-operator-guide.md | 4661 | COMMENT | |
| LOW | docs/patchmon-operator-guide.md | 4681 | # This value is synced from the server on startup. If the server has | COMMENT |
| LOW | docs/patchmon-operator-guide.md | 4701 | integrations: | COMMENT |
| LOW | docs/patchmon-operator-guide.md | 4721 | # SECURITY: This setting can ONLY be enabled by manually editing | COMMENT |
| LOW | .github/workflows/docker.yml | 261 | tags: ${{ steps.meta-harbor.outputs.tags }} | COMMENT |
| LOW | .github/actions/release-context/action.yml | 61 | VERSION="${TAG#v}" | COMMENT |
| LOW | server-source-code/cmd/server/startup_checks.go | 21 | // 100->150, 200->300. | COMMENT |
| LOW | server-source-code/cmd/server/startup_checks.go | 81 | // This gives roughly 1.5 connections per active host, which covers concurrent | COMMENT |
| LOW | server-source-code/internal/handler/marketing.go | 61 | return nil | COMMENT |
| LOW | server-source-code/internal/handler/billing.go | 1 | // Package handler - billing.go implements the two thin proxy endpoints that back | COMMENT |
| LOW | server-source-code/internal/handler/billing.go | 81 | // currentTenantID returns the context ("tenant") id from the multi-context registry. | COMMENT |
| LOW | server-source-code/internal/handler/billing.go | 321 | // PostMyBillingTierChange returns the handler for POST /me/billing/tier-change. | COMMENT |
| LOW | server-source-code/internal/handler/billing.go | 341 | // 3. The provisioner's JSON response (including the freshly-projected | COMMENT |
| LOW | server-source-code/internal/handler/auth.go | 901 | // hidden rather than clicking through to a 403. | COMMENT |
| LOW | server-source-code/internal/handler/patching_stream.go | 21 | } | COMMENT |
| LOW | …r-source-code/internal/handler/compliance_hash_test.go | 81 | // TestCanonicalComplianceHashFromPayload_CarriesRemediationFields is the direct | COMMENT |
| LOW | server-source-code/internal/handler/dashboard.go | 101 | return false | COMMENT |
| LOW | server-source-code/internal/handler/agent_disconnect.go | 21 | COMMENT | |
| LOW | server-source-code/internal/handler/integrations.go | 481 | "install_events": payload.InstallEvents, | COMMENT |
| LOW | server-source-code/internal/handler/hash_canonical.go | 1 | // Package handler — canonical content hashes for hash-gated check-in. | COMMENT |
| LOW | server-source-code/internal/handler/install.go | 301 | } | COMMENT |
| LOW | server-source-code/internal/handler/install.go | 721 | if len(payload.Sections) > 0 { | COMMENT |
| LOW | server-source-code/internal/middleware/realip.go | 1 | package middleware | COMMENT |
| LOW | …rver-source-code/internal/middleware/ratelimit_test.go | 41 | } | COMMENT |
| LOW | server-source-code/internal/database/retry.go | 21 | // isolation when the read/write set conflicts with a concurrent committed | COMMENT |
| LOW | server-source-code/internal/database/retry.go | 81 | func sqlStateOf(err error) string { | COMMENT |
| LOW | server-source-code/internal/database/retry.go | 121 | if attempt >= cfg.MaxAttempts { | COMMENT |
| LOW | server-source-code/internal/context/middleware.go | 161 | // | COMMENT |
| LOW | server-source-code/internal/config/config.go | 181 | COMMENT | |
| LOW | server-source-code/internal/config/config.go | 281 | MaxLoginAttempts: getEnvInt("MAX_LOGIN_ATTEMPTS", 5), | COMMENT |
| LOW | server-source-code/internal/auth/oidc/client.go | 401 | return "" | COMMENT |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | setup-docker.sh | 153 | # Step 1: Check if PatchMon is already installed | COMMENT |
| LOW⚡ | setup-docker.sh | 172 | # Step 2: Detect OS | COMMENT |
| LOW⚡ | setup-docker.sh | 185 | # Step 3: Check / Install Docker Engine | COMMENT |
| LOW⚡ | setup-docker.sh | 264 | # Step 4: Check Docker Compose | COMMENT |
| LOW⚡ | setup-docker.sh | 278 | # Step 5: Create PatchMon directory | COMMENT |
| LOW⚡ | setup-docker.sh | 289 | # Step 6: Download compose file and env template | COMMENT |
| LOW⚡ | setup-docker.sh | 300 | # Step 7: Run the env setup script (generates secrets, configures URL) | COMMENT |
| LOW⚡ | setup-docker.sh | 315 | # Step 8: Pull images | COMMENT |
| LOW⚡ | setup-docker.sh | 326 | # Step 9: Start PatchMon | COMMENT |
| LOW⚡ | setup-docker.sh | 356 | # Step 10: Summary | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 688 | // Step 1: Detect OS | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 707 | // Step 2: Install OpenSCAP packages | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 746 | // Step 3: Verify installation and SSG content | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 808 | // Step 4: Docker Bench (if docker enabled) | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 848 | // Step 5: Complete | COMMENT |
| LOW | agent-source-code/cmd/patchmon-agent/commands/serve.go | 2564 | // Step 1: WUA - install approved OS/KB updates | COMMENT |
| LOW⚡ | agent-source-code/cmd/patchmon-agent/commands/serve.go | 2585 | // Step 2: WinGet - upgrade all applications | COMMENT |
| LOW⚡ | agent-source-code/cmd/patchmon-agent/commands/serve.go | 2595 | // Step 3: report reboot status | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 74 | # Step 1: Stop systemd/OpenRC service if it exists | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 222 | # Step 2: Remove crontab entries | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 232 | # Step 3: Remove agent binaries and scripts | COMMENT |
| LOW | agents/patchmon_remove.sh | 270 | # Step 4: Remove configuration directory and files | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 290 | # Step 5: Remove log files | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 300 | # Step 6: Clean up backup files | COMMENT |
| LOW | agents/patchmon_remove.sh | 398 | # Step 7: Final verification | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 497 | # Step 1: Handle existing configuration directory | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 546 | # Step 2: Create configuration files | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 614 | # Step 3: Download the PatchMon agent binary using API credentials | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 670 | # Step 4: Test the configuration | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 678 | # Step 5: Setup service for WebSocket connection | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 74 | # Step 1: Stop systemd/OpenRC service if it exists | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 222 | # Step 2: Remove crontab entries | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 232 | # Step 3: Remove agent binaries and scripts | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_remove.sh | 270 | # Step 4: Remove configuration directory and files | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 290 | # Step 5: Remove log files | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 300 | # Step 6: Clean up backup files | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_remove.sh | 398 | # Step 7: Final verification | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 497 | # Step 1: Handle existing configuration directory | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 546 | # Step 2: Create configuration files | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 614 | # Step 3: Download the PatchMon agent binary using API credentials | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 670 | # Step 4: Test the configuration | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 678 | # Step 5: Setup service for WebSocket connection | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/diagnostics.sh | 37 | # Check if running as root | COMMENT |
| LOW | tools/diagnostics.sh | 78 | # Check if it's a PatchMon installation | COMMENT |
| LOW | docker/frontend.docker-entrypoint.sh | 22 | # Check if file is different from default (user uploaded a custom one) | COMMENT |
| LOW | docker/frontend.docker-entrypoint.sh | 45 | # Set ownership to backend user (1000:1000) and permissions to 1777 (world-writable + sticky) | COMMENT |
| LOW | agents/patchmon_remove.sh | 23 | # Check if backup files should be removed (default: preserve for safety) | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 66 | # Check if running as root | COMMENT |
| LOW⚡ | agents/patchmon_remove.sh | 82 | # Check if service is active | COMMENT |
| LOW | agents/patchmon_remove.sh | 103 | # Check if service is enabled | COMMENT |
| LOW | agents/patchmon_remove.sh | 195 | # Check if processes still exist | COMMENT |
| LOW | agents/direct_host_auto_enroll.sh | 77 | # Check if running as root | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 500 | # Check if configuration directory already exists | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 549 | # Check if config file already exists | COMMENT |
| LOW⚡ | agents/patchmon_install.sh | 620 | # Check if agent binary already exists | COMMENT |
| LOW | agents/patchmon_install.sh | 38 | # Check if running as root | COMMENT |
| LOW | agents/patchmon_install.sh | 58 | # Check if we can read from stdin (interactive terminal) | COMMENT |
| LOW | agents/patchmon_install.sh | 196 | # Check if --force flag is set (for bypassing broken packages) | COMMENT |
| LOW | agents/patchmon_install.sh | 515 | # Check if agent is already configured and working (before we overwrite anything) | COMMENT |
| LOW | agents/patchmon_install.sh | 562 | # Check if credentials file already exists | COMMENT |
| LOW | agents/patchmon_install.sh | 732 | # Check if service started successfully | COMMENT |
| LOW | agents/patchmon_install.sh | 794 | # Check if service started successfully | COMMENT |
| LOW | agents/proxmox_auto_enroll.sh | 79 | # Check if running on Proxmox | COMMENT |
| LOW | agents/proxmox_auto_enroll.sh | 142 | # Check if container is stopped | COMMENT |
| LOW | agents/proxmox_auto_enroll.sh | 200 | # Check if agent is already installed and working BEFORE enrollment | COMMENT |
| LOW | agents/proxmox_auto_enroll.sh | 345 | # Check if it's a dpkg error | COMMENT |
| LOW | .github/workflows/agent-release.yml | 148 | # Check if binary is statically linked (should have minimal or no dynamic dependencies) | COMMENT |
| LOW | .github/workflows/agent-release.yml | 166 | # Check if any version is > 2.28 (Debian Buster) | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_remove.sh | 23 | # Check if backup files should be removed (default: preserve for safety) | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 66 | # Check if running as root | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_remove.sh | 82 | # Check if service is active | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_remove.sh | 103 | # Check if service is enabled | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_remove.sh | 195 | # Check if processes still exist | COMMENT |
| LOW | …source-code/internal/agents/direct_host_auto_enroll.sh | 77 | # Check if running as root | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 500 | # Check if configuration directory already exists | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 549 | # Check if config file already exists | COMMENT |
| LOW⚡ | server-source-code/internal/agents/patchmon_install.sh | 620 | # Check if agent binary already exists | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 38 | # Check if running as root | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 58 | # Check if we can read from stdin (interactive terminal) | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 196 | # Check if --force flag is set (for bypassing broken packages) | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 515 | # Check if agent is already configured and working (before we overwrite anything) | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 562 | # Check if credentials file already exists | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 732 | # Check if service started successfully | COMMENT |
| LOW | server-source-code/internal/agents/patchmon_install.sh | 794 | # Check if service started successfully | COMMENT |
| LOW | …ver-source-code/internal/agents/proxmox_auto_enroll.sh | 79 | # Check if running on Proxmox | COMMENT |
| LOW | …ver-source-code/internal/agents/proxmox_auto_enroll.sh | 142 | # Check if container is stopped | COMMENT |
| LOW | …ver-source-code/internal/agents/proxmox_auto_enroll.sh | 200 | # Check if agent is already installed and working BEFORE enrollment | COMMENT |
| LOW | …ver-source-code/internal/agents/proxmox_auto_enroll.sh | 345 | # Check if it's a dpkg error | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docker/docker-compose.dev.yml | 4 | # This file contains hardcoded credentials for LOCAL DEVELOPMENT ONLY. | COMMENT |
| MEDIUM | agents/patchmon_install.sh | 582 | # Create main config file | COMMENT |
| MEDIUM | server-source-code/internal/agents/patchmon_install.sh | 582 | # Create main config file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/build.sh | 12 | # Usage: | COMMENT |
| LOW⚡ | agents/direct_host_auto_enroll.sh | 16 | # Usage: | COMMENT |
| LOW⚡ | agents/proxmox_auto_enroll.sh | 16 | # Usage: | COMMENT |
| LOW⚡ | …source-code/internal/agents/direct_host_auto_enroll.sh | 16 | # Usage: | COMMENT |
| LOW⚡ | …ver-source-code/internal/agents/proxmox_auto_enroll.sh | 16 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frontend/src/pages/settings/Integrations.jsx | 1494 | {`echo -n "YOUR_API_KEY:YOUR_API_SECRET" | base64`} | CODE |
| HIGH | frontend/src/pages/settings/Integrations.jsx | 1497 | Replace YOUR_API_KEY and YOUR_API_SECRET with your actual | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/patchmon-api-integrations-guide.md | 4618 | print(f"Error: {response.status_code} - {response.json()}") | CODE |
| MEDIUM | docs/patchmon-api-integrations-guide.md | 4698 | print(f"Error: {response.status_code} - {response.json()}") | CODE |
| MEDIUM | docs/patchmon-api-integrations-guide.md | 4751 | print(f"Error fetching hosts: {response.status_code}") | CODE |
| MEDIUM | docs/patchmon-api-integrations-guide.md | 4855 | print("Error: PATCHMON_API_KEY and PATCHMON_API_SECRET must be set", file=sys.stderr) | CODE |
| MEDIUM | docs/patchmon-api-integrations-guide.md | 4865 | print(f"Error fetching inventory: {e}", file=sys.stderr) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | server-source-code/internal/handler/rdp.go | 538 | // these fields are intentionally named as requested values rather than the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/pages/hostdetail/WaitingForConnection.jsx | 11 | // Check multiple fields to be more robust - if any of these are populated, we have a report | COMMENT |
| MEDIUM | …urce-code/internal/integrations/compliance/openscap.go | 1872 | // Extract Rule elements using a more robust approach: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/patchmon-api-integrations-guide.md | 4745 | def generate_ansible_inventory(): | CODE |