AI Slop Code Risk Monitor

tailscale/tailscale

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

The easiest, most secure way to use WireGuard and 2FA.

2.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tailscale/tailscale, a Go project with 38,402 GitHub stars. SynthScan examined 698,365 lines of code across 2908 source files, recording 1720 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.6 (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.

2.6
Adjusted Signal
2.6
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
38.4K
Stars
Go
Language
698.4K
Lines of Code
2.9K
Files
1.7K
Pattern Hits
2026-10-31
Scan Date
0.00
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 11.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.9/100 · LOW

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

Agent Over-Engineering Ratio 0.2/100 · LOW

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

PR Review Velocity Impact 12.5/100 · LOW

Which changes need focused human review? 1720 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 10HIGH 2MEDIUM 24LOW 1684

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 1720 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 Block1622 hits · 1560 pts
SeverityFileLineSnippetContext
LOW.policy.yml1# Approval policy for this repository, enforced by policy-botCOMMENT
LOWbuild_docker.sh1#!/usr/bin/env shCOMMENT
LOWheader.txt1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWmisc/bumpdeps/bumpdeps.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWmisc/bumpdeps/bumpdeps.go21// - "wireguard-go" and "gvisor" are aliases for the modules of the sameCOMMENT
LOWmisc/bumpdeps/bumpdeps.go41// rollback commit, not an unattended bump.COMMENT
LOWmisc/bumpdeps/bumpdeps.go61// release declares a different module path (renamed projects).COMMENT
LOWmisc/git_hook/git-hook.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWmisc/git_hook/githook/launcher.sh1#!/usr/bin/env bashCOMMENT
LOWmisc/git_hook/githook/largefiles.go21COMMENT
LOWmisc/git_hook/githook/pre-push.go21 WatchedRemotes []stringCOMMENT
LOWprober/dns.go21 // Networks is the list of networks to resolve; if non-empty, it shouldCOMMENT
LOWprober/prober_test.go341# TYPE probe_interval_secs gaugeCOMMENT
LOWprober/http.go21const maxHTTPBody = 4 << 20 // MiBCOMMENT
LOWprober/derp.go881 return runDerpProbeNodePair(ctx, from, to, fromc, toc, size)COMMENT
LOWcmd/cloner/cloner.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/natc/natc.go261COMMENT
LOWcmd/mkversion/mkversion.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/vet/subtestnames/analyzer.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/vet/jsontags/analyzer.go41 var seenName boolCOMMENT
LOWcmd/vet/jsontags/analyzer.go81 // other than when the map or slice are empty.COMMENT
LOWcmd/vet/jsontags/analyzer.go101 // This operates the same under both v1 and v2 so long asCOMMENT
LOWcmd/vet/jsontags/report.go41 }COMMENT
LOWcmd/gitops-pusher/cache.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/k8s-nameserver/main.go41 defaultDNSConfigDir = "/config"COMMENT
LOWcmd/k8s-nameserver/main.go361 if err != nil {COMMENT
LOWcmd/derper/ace.go41 // to the bidirectional ts2021 Noise protocol.COMMENT
LOWcmd/derper/ipcert.go41// TLS certificates for the server's IP addresses on demand, using theCOMMENT
LOWcmd/sync-containers/main.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/containerboot/test_tailscale.sh1#!/usr/bin/env bashCOMMENT
LOWcmd/containerboot/main.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/containerboot/main.go21// Must be used together with TS_CLIENT_ID. If the value begins with "file:", it isCOMMENT
LOWcmd/containerboot/main.go41// destination defined by an IP.COMMENT
LOWcmd/containerboot/main.go61// logged in. If false (the default, for backwardsCOMMENT
LOWcmd/containerboot/main.go81// - TS_EXPERIMENTAL_VERSIONED_CONFIG_DIR: if specified, a path to aCOMMENT
LOWcmd/containerboot/main.go101// cluster using the same hostname (in this case, the MagicDNS name of the ingress proxy)COMMENT
LOWcmd/containerboot/main.go961 // the first time they become available).COMMENT
LOWcmd/containerboot/main_test.go1421 if strings.HasSuffix(line, " "+want) {COMMENT
LOWcmd/jsonimports/format.go21// mustFormatFile formats a Go source file and adjust "json" imports.COMMENT
LOWcmd/jsonimports/jsonimports.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/jsonimports/jsonimports.go21// and "encoding/json/jsontext" into the standard libraryCOMMENT
LOWcmd/tsnet-proxy/tsnet-proxy.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/fbstatus/fbstatus.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/tl-longchain/tl-longchain.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/proxy-to-grafana/proxy-to-grafana.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/proxy-to-grafana/proxy-to-grafana.go21// whitelist = 127.0.0.1COMMENT
LOWcmd/tsconnect/wasmbuild/wasmbuild.go21COMMENT
LOWcmd/tsconnect/wasmbuild/wasmbuild.go41// - "drive", "taildrop", "peerapi*": no local filesystem.COMMENT
LOWcmd/tsconnect/wasmbuild/wasmbuild.go101// ts_omit_<feature> for every entry in [featuretags.Features] that isCOMMENT
LOWcmd/tta/wgserver_linux.go41// - addr: CIDR for the WG interface (e.g. "10.64.0.1/24")COMMENT
LOWcmd/tta/tta.go641var addFirewall func() error // set by fw_linux.goCOMMENT
LOWcmd/tailscale/generate.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/tailscale/tsroutecheckjsonv0/tsroutecheck.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
LOWcmd/tailscale/cli/up.go261var upArgsGlobal upArgsTCOMMENT
LOWcmd/tailscale/cli/up.go721 go func() {COMMENT
LOWcmd/tailscale/cli/serve_legacy.go221COMMENT
LOWcmd/tailscale/cli/serve_legacy.go781// flow to enable a feature, such as Funnel, on their tailnet.COMMENT
LOWcmd/tailscale/cli/file.go321COMMENT
LOWcmd/tailscale/cli/exitnode.go221// filterFormatAndSortExitNodes filters and sorts exit nodes intoCOMMENT
LOWcmd/tailscale/jsonoutput/jsonoutput.go1// Copyright (c) Tailscale Inc & contributorsCOMMENT
1562 more matches not shown…
Hallucination Indicators10 hits · 100 pts
SeverityFileLineSnippetContext
CRITICALcmd/k8s-operator/sts_test.go189 wantSS.Spec.Template.Labels = proxyClassAllOpts.Spec.StatefulSet.Pod.Labels.Parse()CODE
CRITICALcmd/k8s-operator/sts_test.go223 wantSS.Spec.Template.Labels = proxyClassJustLabels.Spec.StatefulSet.Pod.Labels.Parse()CODE
CRITICALcmd/k8s-operator/sts_test.go235 wantSS.Spec.Template.Labels = proxyClassAllOpts.Spec.StatefulSet.Pod.Labels.Parse()CODE
CRITICALcmd/k8s-operator/sts_test.go262 wantSS.Spec.Template.Labels = proxyClassJustLabels.Spec.StatefulSet.Pod.Labels.Parse()CODE
CRITICALipn/ipnlocal/peerapi.go484 if hasCGNATInterface, err := h.ps.b.sys.NetMon.Get().HasCGNATInterface(); hasCGNATInterface {CODE
CRITICALipn/ipnlocal/peerapi_drive.go56 fs, ok := h.ps.b.sys.DriveForRemote.GetOK()CODE
CRITICALwgengine/magicsock/relaymanager.go111 if !r.wlb.ep.c.debugLogging.Load() {CODE
CRITICALwgengine/magicsock/relaymanager.go351 if !r.wlb.ep.c.debugLogging.Load() {CODE
CRITICALwgengine/magicsock/relaymanager.go415 sharedKey: work.wlb.ep.c.discoAtomic.Private().Shared(work.se.ServerDisco),CODE
CRITICALk8s-operator/reconciler/proxyclass/proxyclass.go250 if errs := metavalidation.ValidateLabels(pc.Spec.Metrics.ServiceMonitor.Labels.Parse(), field.NewPath(".spec.metrics.sCODE
AI Slop Vocabulary11 hits · 33 pts
SeverityFileLineSnippetContext
MEDIUMtailcfg/tailcfg.go177// - 126: 2025-09-17: Client uses seamless key renewal unless disabled by control (tailscale/corp#31479)COMMENT
MEDIUMutil/eventbus/debug.go33// deliberately withheld from bus clients to encourage more robust andCOMMENT
MEDIUMutil/winutil/restartmgr_windows.go149 // processes that utilize the binaries previously specified by calls toCOMMENT
MEDIUMutil/winutil/authenticode/authenticode_windows.go403 // 1. Subsequent API calls directly utilize the file's Win32 HANDLE;COMMENT
MEDIUMtstest/largetailnet/delta_test.go111 // are robust against interleaving (assuming no other test runs inCOMMENT
MEDIUMwgengine/wgcfg/mem_notios.go24 // when head I/O ops utilize segmentation offloading, where a single head I/OCOMMENT
MEDIUMwgengine/magicsock/magicsock.go1267// should provide a mechanism for seamless rotation by supporting short term useCOMMENT
MEDIUMwgengine/magicsock/endpoint.go2128 // Prefer IPv6 for being a bit more robust, as long asCOMMENT
MEDIUM…ature/buildfeatures/feature_listenrawdisco_disabled.go10// HasListenRawDisco is whether the binary was built with support for modular feature "Use raw sockets for more robust dCOMMENT
MEDIUMfeature/buildfeatures/feature_listenrawdisco_enabled.go10// HasListenRawDisco is whether the binary was built with support for modular feature "Use raw sockets for more robust dCOMMENT
MEDIUMcontrol/tsp/map_test.go91 // the test robust if a server-side keepalive arrives mid-test.COMMENT
Fake / Example Data32 hits · 32 pts
SeverityFileLineSnippetContext
LOWcmd/tsconnect/build.go30 if err := cleanDir(*distDir, "placeholder"); err != nil {CODE
LOWcmd/tailscale/cli/netcheck_test.go82 cliAddress: "lorem ipsum",CODE
LOWcmd/tailscale/cli/netcheck_test.go84 wantError: `invalid bind address: "lorem ipsum"`,CODE
LOWcmd/hello/helloserver/helloserver.go87 LoginName string // "foo@bar.com"CODE
LOWcmd/k8s-operator/ingress-for-pg_test.go1012 corev1.TLSPrivateKeyKey: []byte("fake-key"),CODE
LOWcmd/k8s-operator/egress-eps_test.go40 ExternalName: "placeholder",CODE
LOWcmd/k8s-operator/egress-eps_test.go256 ExternalName: "placeholder",CODE
LOWcmd/k8s-operator/egress-services_test.go83 ExternalName: "placeholder",CODE
LOWcmd/k8s-operator/egress-services_test.go374 ExternalName: "placeholder",CODE
LOWcmd/k8s-operator/egress-services_test.go510 ExternalName: "placeholder",CODE
LOWcmd/k8s-operator/e2e/egress_test.go210 ExternalName: "placeholder",CODE
LOWcmd/k8s-operator/e2e/proxygrouppolicy_test.go60 ExternalName: "placeholder",CODE
LOWipn/ipnlocal/diskcache_test.go30 LoginName: "user@example.com",CODE
LOWipn/ipnlocal/profiles_test.go1208 LoginName: "user@example.com",CODE
LOWipn/store/kubestore/store_kube_test.go287 testKey = "fake-key"CODE
LOWipn/store/kubestore/store_kube_test.go465 testKey = "fake-key"CODE
LOWipn/store/kubestore/store_kube_test.go642 testKey = "fake-key"CODE
LOWutil/deephash/tailscale_types_test.go163 {ID: 1, LoginName: "foo@bar.com"},CODE
LOWutil/dnsname/dnsname_test.go188 {"email", "admin@example.com", "admin-example-com"},CODE
LOWtempfork/acme/rfc8555_test.go363 const email = "mailto:user@example.org"CODE
LOWtempfork/acme/rfc8555_test.go441 const email = "mailto:user@example.org"CODE
LOWtempfork/acme/rfc8555_test.go589 const email = "mailto:user@example.org"CODE
LOWtempfork/acme/rfc8555_test.go723 const email = "mailto:user@example.org"CODE
LOWssh/tailssh/tailssh_test.go203 Principals: []*tailcfg.SSHPrincipal{{UserLogin: "foo@bar.com"}},CODE
LOWssh/tailssh/tailssh_test.go206 ci: &sshConnInfo{uprof: tailcfg.UserProfile{LoginName: "foo@bar.com"}},CODE
LOWssh/tailssh/auditd_linux_test.go47 message: `op=login hostname="test-host" exe="/usr/bin/tailscaled" ts_user="user@example.com" ts_node="node.tail-scalCODE
LOWk8s-operator/api-proxy/proxy_events_test.go74 LoginName: "user@example.com",CODE
LOWk8s-operator/api-proxy/proxy_events_test.go87 NodeUser: "user@example.com",CODE
LOWclient/systray/systray_linux_test.go148 Name: "user@example.com",CODE
LOWclient/web/web_test.go557 user := &tailcfg.UserProfile{LoginName: "user@example.com", ID: tailcfg.UserID(1)}CODE
LOWclient/web/web_test.go878 user := &tailcfg.UserProfile{LoginName: "user@example.com", ID: tailcfg.UserID(1)}CODE
LOWcontrol/controlclient/map_test.go1003 {ID: 100, LoginName: "user@example.com"},CODE
Structural Annotation Overuse12 hits · 20 pts
SeverityFileLineSnippetContext
LOW⚡cmd/containerboot/settings.go425// Step 1: run 'tailscaled'COMMENT
LOW⚡cmd/containerboot/settings.go435// Step 1: run 'tailscaled'COMMENT
LOWutil/hashx/block512.go94 // NOTE: This method is carefully written to be inlineable.COMMENT
LOWutil/hashx/block512.go108 // NOTE: This method is carefully written to be inlineable.COMMENT
LOWutil/hashx/block512.go122 // NOTE: This method is carefully written to be inlineable.COMMENT
LOWutil/hashx/block512.go136 // NOTE: This method is carefully written to be inlineable.COMMENT
LOWtstest/integration/netmapdelta_test.go125 // Step 1: a full netmap in which the address belongs to oldOwner. SettingCOMMENT
LOWtstest/integration/netmapdelta_test.go167 // Step 2: one MapResponse that hands the address to n2 and removesCOMMENT
LOWscripts/installer.sh23 # Step 1: detect the current linux distro, version, and packaging system.COMMENT
LOWscripts/installer.sh422 # Step 2: having detected an OS we support, is it one of theCOMMENT
LOWscripts/installer.sh510 # Step 3: work out if we can run privileged commands, and if so,COMMENT
LOWscripts/installer.sh532 # Step 4: run the installation.COMMENT
Decorative Section Separators6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUM.policy-tests.yml22 # ------------------------------------------------------------------COMMENT
MEDIUM.policy-tests.yml25 # ------------------------------------------------------------------COMMENT
MEDIUM.policy-tests.yml88 # ------------------------------------------------------------------COMMENT
MEDIUM.policy-tests.yml92 # ------------------------------------------------------------------COMMENT
MEDIUM.policy-tests.yml146 # ------------------------------------------------------------------COMMENT
MEDIUM.policy-tests.yml148 # ------------------------------------------------------------------COMMENT
Verbosity Indicators9 hits · 15 pts
SeverityFileLineSnippetContext
LOW⚡cmd/containerboot/settings.go425// Step 1: run 'tailscaled'COMMENT
LOW⚡cmd/containerboot/settings.go435// Step 1: run 'tailscaled'COMMENT
LOWipn/ipnlocal/peerapi.go818 // we need to check if they're allowed access to the internet.COMMENT
LOWtstest/integration/netmapdelta_test.go125 // Step 1: a full netmap in which the address belongs to oldOwner. SettingCOMMENT
LOWtstest/integration/netmapdelta_test.go167 // Step 2: one MapResponse that hands the address to n2 and removesCOMMENT
LOWscripts/installer.sh23 # Step 1: detect the current linux distro, version, and packaging system.COMMENT
LOWscripts/installer.sh422 # Step 2: having detected an OS we support, is it one of theCOMMENT
LOWscripts/installer.sh510 # Step 3: work out if we can run privileged commands, and if so,COMMENT
LOWscripts/installer.sh532 # Step 4: run the installation.COMMENT
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHutil/winutil/winutil.go106// the calling executable as requested via opts. This should be called by anyCOMMENT
HIGHfeature/conn25/conn25.go680 // OK indicates that the mapping was created as requested.COMMENT
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMcmd/tailscale/jsonoutput/jsonoutput.go64// # Defining a stable, versioned JSON formatCOMMENT
MEDIUMcmd/k8s-operator/deploy/manifests/proxy.yaml1# This file is not a complete manifest, it's a skeleton that the operator embedsCOMMENT
MEDIUMcmd/k8s-operator/deploy/manifests/userspace-proxy.yaml1# This file is not a complete manifest, it's a skeleton that the operator embedsCOMMENT
MEDIUMtstest/integration/vms/nixos_test.go65 # Define the package (derivation) for Tailscale based on the binaries weCOMMENT
Example Usage Blocks7 hits · 10 pts
SeverityFileLineSnippetContext
LOWcmd/netlogfmt/main.go9// Example usage:COMMENT
LOWsafeweb/http.go47// # Example usageCOMMENT
LOWutil/bufpool/pool.go18// Example usage:COMMENT
LOWutil/must/must.go6// Example usage:COMMENT
LOWutil/ctxkey/key.go6// Example usage:COMMENT
LOWutil/ctxkey/key.go33// Example usage:COMMENT
LOWutil/ctxkey/key.go53// Example usage:COMMENT
Excessive Try-Catch Wrapping2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMtstest/tailmac/Swift/Common/TailMacConfigHelper.swift117 print("Error binding virtual network client socket - \(String(cString: strerror(errno)))")CODE
MEDIUMtstest/tailmac/Swift/Common/TailMacConfigHelper.swift134 print("Error connecting to server socket \(serverSocket) - \(String(cString: strerror(errno)))")CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMbuild_docker.sh10# If you want to build local images for testing, you can use make, which provides few convenience wrappers around this sCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcmd/tailscale/cli/dns.go31 // TODO: implement `tailscale log` hereCOMMENT
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippetContext
LOWclient/web/src/components/update-available.tsx10export function UpdateAvailableNotification({CODE