
Hello, I'm Shrijith Venkatramana. I'm building git-lrc, an AI code reviewer that runs on every commit. Star Us to help devs discover the project. Do give it a try and share your feedback for improving the product.
Go has a reputation for simplicity and reliability.
But secure by default? Not really.
A lot of Go services today are glued together from:
- third-party modules
- cloud SDKs
- Docker images
- internal tooling
- Kubernetes manifests
- CI pipelines
- copied snippets from old repos
And that means your attack surface is no longer just your Go code.
The good news is that the Go ecosystem has quietly built an excellent set of security tools over the past few years. Some focus on your source code. Some scan dependencies. Some hunt leaked credentials. Others scan entire containers and infrastructure configs.
A few are genuinely excellent.
This guide breaks down the Go security scanners actually worth knowing in 2026 — what they’re good at, where they fall short, and how teams are using them in practice.
1. Gosec — Still the Default Go Security Scanner
If you ask most Go engineers what security scanner they use, the answer is probably going to be Gosec.
It performs static analysis on Go code and looks for common security mistakes:
- weak cryptography
- SQL injection patterns
- unsafe file permissions
- command execution issues
- risky imports
- integer overflows
- hardcoded credentials
The big reason people still use it is simple:
It understands Go idioms reasonably well.
A generic scanner often struggles with Go’s patterns around interfaces, error handling, context propagation, or concurrency. Gosec was built specifically for this ecosystem.
A minimal setup looks like:
gosec ./...
And that already catches surprising things in mature codebases.
Where it works well
- CI pipelines
- Internal backend services
- Monorepos with many small Go services
- Teams wanting quick wins fast
Where it gets annoying
False positives.
You will eventually end up with:
// #nosec
sprinkled in places where the scanner is technically correct but practically irrelevant.
That’s not unique to Gosec though. Almost every SAST tool eventually becomes a signal-to-noise battle.
2. Govulncheck — The Official Go Team Scanner
This one changed the conversation around dependency scanning.
Most dependency scanners work like this:
“You imported package X. Package X once had a CVE. Panic.”
govulncheck does something smarter.
It performs reachability analysis.
Meaning:
- not just “is the vulnerable package present?”
- but “does your code actually call the vulnerable path?”
That dramatically cuts down noise.
Example:
- your dependency tree may contain a vulnerable parser
- but if your code never invokes the vulnerable function
-
govulncheckstays quiet
That sounds small until you compare outputs side-by-side with older SCA tools that generate hundreds of irrelevant alerts.
Why Go engineers like it
Because it behaves like an engineering tool rather than a compliance tool.
Install:
go install golang.org/x/vuln/cmd/govulncheck@latest
Run:
govulncheck ./...
That’s it.
Limitation
It focuses on Go modules.
It will not help you with:
- vulnerable Docker base images
- Terraform
- Helm charts
- leaked secrets
- business logic flaws
So think of it as one layer, not the whole security strategy.
3. Semgrep — The “Fast Enough For CI” Scanner
Semgrep became popular because developers actually tolerated using it.
That sounds trivial, but it matters.
A lot of traditional enterprise scanners are:
- painfully slow
- opaque
- difficult to customize
- impossible to reason about
Semgrep took the opposite route.
Rules are YAML-based and readable enough that normal engineers can author them.
Example:
pattern: exec.Command(...)
That simplicity is a huge reason security teams adopted it.
What Semgrep is especially good at
Custom organizational rules.
For example:
- banning dangerous internal APIs
- enforcing auth middleware
- preventing raw SQL usage
- checking tenancy validation
- detecting unsafe deserialization
This is where Semgrep becomes much more powerful than “generic vulnerability scanning.”
Caveat
The free Community Edition has limitations around cross-file and interprocedural analysis.
Meaning:
- it can miss vulnerabilities spanning multiple files
- deep taint tracking is limited unless you use paid tiers
Still, for speed-to-value, Semgrep is hard to beat.
4. Staticcheck — Not Marketed As Security, But Extremely Useful
Staticcheck is technically more of a correctness and quality tool.
But security bugs often begin as correctness bugs.
Things like:
- broken error handling
- nil pointer assumptions
- ignored return values
- unreachable branches
- race-prone logic
These eventually become production vulnerabilities.
What engineers love about Staticcheck is its precision.
Unlike many linters:
- warnings are usually actionable
- output is low-noise
- results rarely feel random
That matters a lot in large teams.
A scanner developers ignore is effectively useless.
5. OSV-Scanner — Dependency Scanning Without The Bloat
Google’s OSV ecosystem has quietly become one of the better vulnerability databases around.
OSV-Scanner integrates directly with it.
One interesting detail:
it often uses precise commit-level matching instead of broad version-range guessing.
That reduces ambiguity significantly.
This matters because traditional CVE tooling sometimes produces alerts like:
“Somewhere between versions 1.2 and 9.7 something may be vulnerable.”
Which is not particularly operationally useful.
Good use cases
- validating
go.mod - CI dependency checks
- supply chain visibility
- SBOM workflows
Not good at
Anything involving:
- your actual application logic
- auth flaws
- injection issues
- insecure business workflows
It only knows known vulnerabilities.
6. Trivy — The Security Tool Everyone Eventually Installs
At some point most containerized teams end up adopting Trivy.
Because it scans almost everything:
- containers
- filesystem dependencies
- Kubernetes manifests
- Terraform
- secrets
- SBOMs
And surprisingly, it does this without feeling horribly bloated.
A common pattern today looks like:
trivy image myapp:latest
before deployment.
Why it became popular
Because modern production risk often sits outside the Go binary itself.
Example:
- vulnerable Alpine image
- outdated OpenSSL package
- risky Kubernetes config
- exposed IAM permissions
Your Go code can be perfectly secure while your deployment stack is not.
Trivy helps bridge that gap.
Limitation
It is broad rather than deeply specialized.
So:
- excellent infrastructure coverage
- less sophisticated Go AST analysis compared to dedicated SAST tools
7. Gitleaks — Fast Secret Detection That Developers Won’t Hate
Hardcoded secrets remain one of the most common ways companies leak credentials.
And yes:
even experienced engineers do this accidentally.
Especially during:
- debugging
- temporary testing
- rushed production fixes
- local cloud experiments
Gitleaks is popular because it is fast enough to run before commits.
That changes behavior.
If secret scanning only happens later in CI, developers psychologically treat it as “someone else’s problem.”
Pre-commit hooks create immediate feedback.
Example:
gitleaks detect
Important limitation
Regex-based detection has tradeoffs.
It can tell you:
“This looks like an AWS key.”
But not:
- whether it’s active
- expired
- fake
- already revoked
Still incredibly useful.
8. TruffleHog — Secret Scanning With Verification
TruffleHog takes secret scanning further.
If it detects credentials, it may attempt verification against the provider.
Meaning:
- AWS keys
- GitHub tokens
- Slack tokens
- cloud credentials
can sometimes be validated automatically.
This dramatically reduces alert fatigue.
Because the worst kind of security tooling is:
- 500 alerts
- 497 meaningless
- engineers stop caring
Tradeoff
Verification takes time.
So TruffleHog is slower than Gitleaks.
In practice:
- Gitleaks fits better for pre-commit
- TruffleHog fits better for CI or org-wide audits
A lot of teams actually run both.
9. Snyk — Extremely Good UX, Expensive At Scale
Snyk became successful partly because it understood something many security vendors ignored:
Developers care about workflow friction.
The IDE integrations are genuinely good.
The onboarding is smooth.
The remediation guidance is usually understandable.
Compared to older enterprise security tooling, the experience feels much more developer-centric.
Why teams adopt it
Unified visibility:
- SCA
- SAST
- containers
- IaC
- licenses
- PR integration
all in one place.
Why some teams leave later
Cost.
At scale, pricing can become aggressive:
- per-seat
- scan limits
- enterprise tiers
- expanding surface area
A small engineering org may love it.
A very large org may eventually replace parts of it with OSS tooling.
10. SonarQube — The Enterprise Giant
SonarQube sits in a slightly different category.
It is less of a focused security scanner and more of an engineering governance platform.
Large organizations use it for:
- code quality gates
- compliance
- technical debt tracking
- vulnerability management
- reporting across many repos
This is the sort of tool management dashboards love.
Where it shines
Big enterprises with:
- hundreds of services
- compliance requirements
- audit processes
- centralized platform engineering
Downsides
It is heavier operationally:
- server infrastructure
- maintenance
- indexing
- upgrades
- tuning
And many advanced security capabilities are gated behind paid editions.
What Actually Works In Practice?
A lot of engineers search for:
“the best security scanner”
That’s usually the wrong framing.
Modern security workflows are layered.
A more realistic stack looks like:
| Stage | Tool |
|---|---|
| Pre-commit | Gitleaks |
| CI dependency scan | Govulncheck |
| CI static analysis | Gosec or Semgrep |
| Container scan | Trivy |
| Org-wide secret audit | TruffleHog |
That combination already catches a surprisingly large class of real-world mistakes.
Some Important Reality Checks
Security scanners are useful.
But they are not magic.
They generally struggle with:
- authorization logic flaws
- broken multi-tenant isolation
- business workflow vulnerabilities
- race conditions involving distributed systems
- architecture-level trust issues
- subtle crypto misuse
- logic bugs involving state machines
And no scanner can reliably answer:
“Does this system behave safely under adversarial conditions?”
That still requires engineering judgment.
Final Thoughts
The Go ecosystem is actually in a pretty healthy place security-wise right now.
You no longer need:
- giant enterprise platforms
- painfully slow scanners
- security teams filing PDFs nobody reads
A small team can assemble a strong open-source security pipeline with relatively little effort.
If I had to recommend a pragmatic stack for most Go teams today:
-
govulncheckfor dependency vulnerabilities -
gosecorSemgrepfor code scanning -
Gitleaksfor pre-commit protection -
Trivyfor containers and infrastructure
That gets you very far without introducing massive workflow friction.
And honestly, minimizing friction may be one of the most important security features of all.
*AI agents write code fast. They also silently remove logic, change behavior, and introduce bugs -- without telling you. You often find out in production.
git-lrc fixes this. It hooks into git commit and reviews every diff before it lands. 60-second setup. Completely free.*
Any feedback or contributors are welcome! It's online, source-available, and ready for anyone to use.
HexmosTech
/
git-lrc
Free, Micro AI Code Reviews That Run on Commit
| 🇩🇰 Dansk | 🇪🇸 Español | 🇮🇷 Farsi | 🇫🇮 Suomi | 🇯🇵 日本語 | 🇳🇴 Norsk | 🇵🇹 Português | 🇷🇺 Русский | 🇦🇱 Shqip | 🇨🇳 中文 |
git-lrc
Free, Micro AI Code Reviews That Run on Commit
AI agents write code fast. They also silently remove logic, change behavior, and introduce bugs -- without telling you. You often find out in production.
git-lrc fixes this. It hooks into git commit and reviews every diff before it lands. 60-second setup. Completely free.
See It In Action
git-lrc-intro-60s.mp4See git-lrc catch serious security issues such as leaked credentials, expensive cloud operations, and sensitive material in log statements
Why
- 🤖 AI agents silently break things. Code removed. Logic changed. Edge cases gone. You won't notice until production.
- 🔍 Catch it before it ships. AI-powered inline comments show you exactly what changed and what looks wrong.
- 🔁 Build a…
United States
NORTH AMERICA
Related News
What Does "Building in Public" Actually Mean in 2026?
19h ago
The Agentic Headless Backend: What Vibe Coders Still Need After the UI Is Done
19h ago
Why I’m Still Learning to Code Even With AI
21h ago
I gave Claude a persistent memory for $0/month using Cloudflare
1d ago
NYT: 'Meta's Embrace of AI Is Making Its Employees Miserable'
1d ago
