AI Slop Code Risk Monitor

rclone/rclone

SlopCodeMonitor badge for rclone/rclone Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files

1.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for rclone/rclone, a Go project with 60,661 GitHub stars. SynthScan examined 461,131 lines of code across 2100 source files, recording 426 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 1.2 (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.

1.2
Adjusted Signal
1.2
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
60.7K
Stars
Go
Language
461.1K
Lines of Code
2.1K
Files
426
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 4.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.9/100 · LOW

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

Agent Over-Engineering Ratio 0.4/100 · LOW

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

PR Review Velocity Impact 5.6/100 · LOW

Which changes need focused human review? 426 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 16MEDIUM 11LOW 399

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 426 distinct pattern matches across 14 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.

Over-Commented Block340 hits · 340 pts
SeverityFileLineSnippetContext
LOW.markdownlint.yml41# Markdown files we must use whatever works in the final HTML generated docs.COMMENT
LOWcmd/archive/extract/extract.go201COMMENT
LOWcmd/gitannex/e2e_test.go101 configDir stringCOMMENT
LOWcmd/gitannex/gitannex.go1// Package gitannex provides the "gitannex" command, which enables [git-annex]COMMENT
LOWcmd/gitannex/configparse.go81// validateRemoteName validates the "rcloneremotename" config that we receiveCOMMENT
LOWcmd/gitannex/gitannex_test.go1121 remoteItem := fstest.NewItem("KeyAbsolute", "HELLO", item.ModTime)COMMENT
LOWcmd/cmount/fs.go221 }COMMENT
LOWcmd/cmount/mount_unsupported.go1//go:build !((linux && cgo && cmount) || (darwin && cgo && cmount) || (freebsd && cgo && cmount) || (openbsd && cgo && cCOMMENT
LOWcmd/cmount/mountpoint_windows.go21COMMENT
LOWcmd/bisync/bisync_test.go141 // Test case `dry-run` produced log mismatches due to non-deterministicCOMMENT
LOW…d/bisync/testdata/test_createemptysrcdirs/scenario.txt1test createemptysrcdirsCOMMENT
LOWcmd/bisync/testdata/test_dry_run/scenario.txt1test dry-runCOMMENT
LOW…ck_access_filters/golden/include-other-filtersfile.txt1# INCLUDE OTHER Filters file for Check Access filtering testingCOMMENT
LOW…_access_filters/modfiles/include-other-filtersfile.txt1# INCLUDE OTHER Filters file for Check Access filtering testingCOMMENT
LOWcmd/bisync/testdata/test_compare_all/scenario.txt1test changes compare-allCOMMENT
LOWcmd/bisync/testdata/test_backupdir/scenario.txt1test backupdirCOMMENT
LOWcmd/bisync/testdata/test_nomodtime/scenario.txt1test changesCOMMENT
LOWcmd/bisync/testdata/test_changes/scenario.txt1test changesCOMMENT
LOWcmd/bisync/testdata/test_resync/scenario.txt1test resyncCOMMENT
LOW…d/bisync/testdata/test_filtersfile_checks/scenario.txt1test filtersfile-checksCOMMENT
LOWcmd/bisync/testdata/test_ext_paths/scenario.txt1test extended-char-pathsCOMMENT
LOW…d/bisync/testdata/test_extended_filenames/scenario.txt1test extended-filenamesCOMMENT
LOWcmd/version/version_test.go41 // This causes rclone to exit and the tests to stop!COMMENT
LOWcmd/mount2/file.go21// InodeEmbedder level, for example, one can implement NodeReaderCOMMENT
LOWcmd/mount2/mount_unsupported.go1//go:build !linux && (!darwin || !amd64)COMMENT
LOWcmd/mount2/node.go61// // lookup a Dir given a pathCOMMENT
LOWcmd/mount2/node.go161 fuseFlags |= fuse.FOPEN_DIRECT_IOCOMMENT
LOWcmd/mount2/node.go181// returned to the kernel, the kernel can issue further operations,COMMENT
LOWcmd/mount2/node.go281//COMMENT
LOWcmd/mount2/mount.go41 /*COMMENT
LOWcmd/mount2/mount.go61 //COMMENT
LOWcmd/mount2/mount.go81 //COMMENT
LOWcmd/mount2/mount.go161COMMENT
LOWcmd/mount2/mount.go201 // ClientInodes: false,COMMENT
LOWcmd/mount/handle.go61// opened file due to dup(), dup2() or fork() calls. It is notCOMMENT
LOWcmd/mount/mount_unsupported.go1//go:build !linuxCOMMENT
LOWcmd/genautocomplete/genautocomplete_powershell.go21COMMENT
LOWcmd/serve/s3/server.go161 return w.etagHashTypeCOMMENT
LOWcmd/serve/s3/multipart.go1// Multipart upload support for serve s3.COMMENT
LOWcmd/serve/s3/multipart.go241 }COMMENT
LOWcmd/serve/s3/multipart.go501 // turnBuffer means buffer the part until the stream reaches it; itsCOMMENT
LOWcmd/serve/s3/multipart.go521// until it is the next part. Reserved bytes are returnedCOMMENT
LOWcmd/serve/s3/multipart.go1121 }COMMENT
LOWcmd/serve/s3/utils.go101 return ""COMMENT
LOWcmd/serve/s3/s3tests/run.sh1#!/usr/bin/env bashCOMMENT
LOWcmd/serve/docker/options.go21// It is usually named "remote" in documentation but can be aliased asCOMMENT
LOWcmd/serve/docker/docker_test.go401 time.Sleep(tempDelay)COMMENT
LOWcmd/serve/proxy/proxy.go501// secret, it cannot authenticate the client itself.COMMENT
LOWcmd/serve/nfs/handler.go61// path.Clean is used to normalise it and to neutralise any ".." segments,COMMENT
LOWcmd/serve/sftp/handler.go221 // FIXMECOMMENT
LOWcmd/serve/webdav/webdav.go221COMMENT
LOWvfs/write.go121 fh.mu.Lock()COMMENT
LOWvfs/write.go261// being ended normally, so the partially written file is discardedCOMMENT
LOWvfs/write.go281 fh.mu.Lock()COMMENT
LOWvfs/dir.go601 fs.Debugf(d.path, "Removed virtual directory entry %v: %q", virtualState, name)COMMENT
LOWvfs/dir.go661// Create a new manageVirtuals and purge the d.virtuals of any entries which canCOMMENT
LOWvfs/make_open_tests.go1// This makes the open test suite. It tries to open a file (existingCOMMENT
LOWvfs/dir_handle.go41}COMMENT
LOWvfs/dir_handle.go81// Readdirnames reads and returns a slice of names from the directory f.COMMENT
LOWvfs/vfs.go1// Package vfs provides a virtual filing system layer over rclone'sCOMMENT
280 more matches not shown…
Magic Placeholder Names12 hits · 68 pts
SeverityFileLineSnippetContext
HIGHdocs/content/shade.md73api_key> [YOUR_API_KEY]CODE
HIGHdocs/content/shade.md84- api_key: [YOUR_API_KEY]CODE
HIGHdocs/content/quatrix.md46api_key> your_api_keyCODE
HIGHdocs/content/quatrix.md53- api_key: your_api_keyCODE
HIGH⚡docs/content/quatrix.md113- api_key: your_api_keyCODE
HIGH⚡docs/content/quatrix.md118Enter a string value. Press Enter for the default (your_api_key)CODE
HIGH⚡docs/content/quatrix.md128- api_key: your_api_keyCODE
HIGHdocs/content/s3.md5150access_key_id> YOUR_API_KEYCODE
HIGHdocs/content/s3.md5177- access_key_id: YOUR_API_KEYCODE
HIGHdocs/content/s3.md5193access_key_id = YOUR_API_KEYCODE
HIGHdocs/content/storj.md209api_key> your-api-key-for-your-storj-projectCODE
HIGHdocs/content/storj.md218- api_key: your-api-key-for-your-storj-projectCODE
Structural Annotation Overuse19 hits · 34 pts
SeverityFileLineSnippetContext
LOWbackend/internxt/internxt.go1109 // Step 1: If file exists, rename to backup (preserves old file during upload)COMMENT
LOWbackend/internxt/internxt.go1205 // Step 3: Upload succeeded - delete the backup fileCOMMENT
LOW⚡backend/iclouddrive/api/session.go223 // Step 1: Initialize the auth sessionCOMMENT
LOW⚡backend/iclouddrive/api/session.go228 // Step 2: Federate (submit account name)COMMENT
LOW⚡backend/iclouddrive/api/session.go233 // Step 3: SRP init - send client public value A, get salt + BCOMMENT
LOW⚡backend/iclouddrive/api/session.go255 // Step 4: Derive password key and process the SRP challengeCOMMENT
LOW⚡backend/iclouddrive/api/session.go264 // Step 5: Complete - send M1, M2 proofsCOMMENT
LOWbackend/hidrive/helpers.go578// NOTE: This method uses updateFileChunked and may create sparse files,COMMENT
LOWbackend/hidrive/helpers.go613// NOTE: This method uses patchFile and may create sparse files,COMMENT
LOW⚡backend/filelu/filelu.go349 // Step 1: Check if folder is emptyCOMMENT
LOW⚡backend/filelu/filelu.go358 // Step 2: Delete the folderCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md18## Step 1 : Install RcloneCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md55## Step 2: Setup Rclone Configuration fileCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md123## Step 3: Setup Dynamic Group and Add IAM PolicyCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md159## Step 4: Setup Mount FoldersCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md193## Step 5: Identify Rclone mount CLI configuration settings to useCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md287## Step 6: Mounting Options, Use Any one optionCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md343## Step 7: Optional: Mount Nanny, for resiliency, recover from process crashCOMMENT
LOWdocs/content/oracleobjectstorage/tutorial_mount.md391## Step 8: Optional: Setup NFS server to access the mount points of rcloneCOMMENT
Excessive Try-Catch Wrapping12 hits · 23 pts
SeverityFileLineSnippetContext
MEDIUM⚡cmd/test/info/internal/build_csv/main.go123 fs.Fatal(nil, fmt.Sprint("Error writing csv:", err))CODE
MEDIUM⚡cmd/test/info/internal/build_csv/main.go132 fs.Fatal(nil, fmt.Sprint("Error writing csv:", err))CODE
MEDIUM⚡cmd/test/info/internal/build_csv/main.go134 fs.Fatal(nil, fmt.Sprint("Error writing csv:", err))CODE
LOWcmd/serve/s3/s3tests/rclone_shim.py57 except Exception as e:CODE
LOWbin/make_backend_docs.py73 except Exception as e:CODE
LOWbin/make_backend_docs.py82 except Exception as e:CODE
LOWbin/check_autogenerated_edits.py44 except Exception:CODE
MEDIUMbin/manage_backends.py183 print(f"Error running rclone: {e.stderr}")CODE
MEDIUMbin/manage_backends.py186 print("Error: 'rclone' command not found in PATH.")CODE
MEDIUMbin/manage_backends.py243 print(f"Error: {filepath} not found.")CODE
MEDIUMbin/manage_backends.py250 print(f"Error: [{filepath}] 'remote' field is missing or empty. Cannot fetch features.")CODE
MEDIUMbin/manage_backends.py292 print("Error: No files specified.")CODE
Verbosity Indicators10 hits · 20 pts
SeverityFileLineSnippetContext
LOWbackend/internxt/internxt.go1109 // Step 1: If file exists, rename to backup (preserves old file during upload)COMMENT
LOWbackend/internxt/internxt.go1205 // Step 3: Upload succeeded - delete the backup fileCOMMENT
LOWbackend/cache/cache.go1296 // we need to check if the directory exists in the temp fsCOMMENT
LOW⚡backend/iclouddrive/api/session.go223 // Step 1: Initialize the auth sessionCOMMENT
LOW⚡backend/iclouddrive/api/session.go228 // Step 2: Federate (submit account name)COMMENT
LOW⚡backend/iclouddrive/api/session.go233 // Step 3: SRP init - send client public value A, get salt + BCOMMENT
LOW⚡backend/iclouddrive/api/session.go255 // Step 4: Derive password key and process the SRP challengeCOMMENT
LOW⚡backend/iclouddrive/api/session.go264 // Step 5: Complete - send M1, M2 proofsCOMMENT
LOW⚡backend/filelu/filelu.go349 // Step 1: Check if folder is emptyCOMMENT
LOW⚡backend/filelu/filelu.go358 // Step 2: Delete the folderCOMMENT
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHbackend/s3/gen_setfrom.go40// are frequently present in auto-generated code for cloud storageCOMMENT
HIGHlib/structs/structs.go18// are frequently present in auto-generated code for cloud storageCOMMENT
Fake / Example Data11 hits · 11 pts
SeverityFileLineSnippetContext
LOWbackend/onedrive/metadata.go53 Example: "John Doe",CODE
LOWbackend/onedrive/metadata.go76 Example: "John Doe",CODE
LOWbackend/onedrive/metadata.md71 "displayName": "John Doe",CODE
LOWbackend/onedrive/metadata_test.go104 "id": "user@example.com"CODE
LOWbackend/dropbox/dropbox_internal_test.go358Lorem ipsum __dolor__ sit ametCODE
LOWbackend/dropbox/dropbox_internal_test.go393 "Lorem ipsum",CODE
LOWbackend/drive/metadata.go56 Example: "user@example.com",CODE
LOWbackend/drive/drive_internal_test.go443 "Lorem ipsum dolor sit amet, consectetur",CODE
LOWbackend/drive/drive_internal_test.go443 "Lorem ipsum dolor sit amet, consectetur",CODE
LOWdocs/content/onedrive.md993 "displayName": "John Doe",CODE
LOWfs/fspath/path_test.go44 {"user@example.com", nil, "user@example.com"},CODE
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHcmd/serve/s3/s3tests/rclone_shim.py36except ClientError:CODE
HIGHbin/config.py88except ValueError:CODE
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMcmd/bisync/checkfn.go27// It is more robust and accurate than Check becauseCOMMENT
MEDIUMlib/oauthutil/oauthutil.go141// SharedOptions are shared between backends the utilize an OAuth flowCOMMENT
MEDIUMfs/fshttp/http.go67// This function is designed as a robust replacement for tls.X509KeyPair,COMMENT
Deep Nesting5 hits · 5 pts
SeverityFileLineSnippetContext
LOWcmd/serve/s3/s3tests/report.py74CODE
LOWbin/make_backend_docs.py33CODE
LOWbin/config.py60CODE
LOWbin/check_autogenerated_edits.py73CODE
LOWbin/decrypt_names.py21CODE
Slop Phrases3 hits · 4 pts
SeverityFileLineSnippetContext
LOWdocs/content/install.sh12#when adding a tool to the list make sure to also add its corresponding command further in the scriptCOMMENT
LOWcontrib/docker/docker-compose.webdav-server.yml26 # make sure to make rclone listen on 0.0.0.0.COMMENT
LOWlib/pacer/tokens.go22// Get gets a token from the pool - don't forget to return it with PutCOMMENT
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWbin/make_backend_docs.py8CODE
LOWlibrclone/python/test_rclone.py7CODE
LOWlibrclone/python/test_rclone.py9CODE
LOWlibrclone/python/rclone.py22CODE
TODO Padding2 hits · 3 pts
SeverityFileLineSnippetContext
LOWbackend/iclouddrive/api/drive.go531 // TODO: implement multipart uploadCOMMENT
LOWbackend/mailru/mailru.go979 // TODO: implement recursion and ListRCOMMENT
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippetContext
LOWbin/manage_backends.py164def get_backend_name_from_file(filepath):CODE