Security Engineer at GitHub (2026): Levels, Comp, Culture, Interview
In short
Security Engineering at GitHub in 2026 splits across two stakes: GitHub the developer platform serving the open-source ecosystem, and GitHub Advanced Security (GHAS); code scanning powered by CodeQL, secret scanning, supply-chain security, Dependabot; sold as product. Senior+ engineers ship CodeQL queries and analysis-engine code, run AppSec for GitHub.com itself, lead supply-chain research on the npm / Actions / Packages surfaces, or sit on GitHub Security Lab publishing CVE disclosures. Compensation anchors on the levels.fyi GitHub / Microsoft per-company filters post-acquisition.
Key takeaways
- GitHub is the rare company where Security Engineering is both an internal function (defending GitHub.com, one of the most-targeted developer platforms on the public internet) and a product surface (GHAS; code scanning, secret scanning, Dependabot, supply-chain security; sold to enterprise customers). Senior+ candidates choose a track at the recruiter screen.
- GitHub Security Lab (securitylab.github.com, source at github.com/github/securitylab) authors CodeQL queries, publishes CVE advisories, and runs the GitHub Bug Bounty research arm. Lab engineers' canonical public artifact is the open-source CodeQL query pack and the lab's published CVE disclosures; read both before any Security Lab interview.
- CodeQL is the engineering craft at the center of GHAS. The query language is documented at codeql.github.com; the analysis engine, the language packs, and the query libraries are the engineering surface. Senior+ candidates interviewing into the CodeQL track are expected to read query examples and reason about taint tracking, dataflow, and control-flow analysis at the query-language level.
- Supply-chain security is a first-class GitHub track in 2026: npm registry security, GitHub Actions runner safety, GitHub Packages provenance, and the broader Sigstore / SLSA ecosystem GitHub contributes to. The Octoverse annual report (github.blog/news-insights/octoverse) is the canonical public artifact for the ecosystem-scale security data the team operates against.
- Post-Microsoft-acquisition (closed October 2018), GitHub's security program aligns with the Microsoft Security Response Center (MSRC) for coordinated disclosure and incident response. Senior+ candidates are interviewing into a security org that operates at GitHub-product cadence but escalates and coordinates through MSRC.
- The AppSec interview loop for GitHub.com itself screens for OWASP Top 10 fluency at the standards level, threat modeling on a Ruby + Go + TypeScript polyglot codebase, code-review-at-scale judgment (CodeQL is the team's craft; they expect candidates who reason about static analysis, not just consume it), and a behavioral round that frequently includes a supply-chain or coordinated-disclosure scenario.
- Compensation anchors on the levels.fyi GitHub and Microsoft per-company filters at levels.fyi/companies/github and levels.fyi/companies/microsoft. Single-number claims for Security Engineer total comp at GitHub are unreliable; the post-acquisition leveling maps Security Engineering onto Microsoft's IC ladder for many tracks.
Two stakes, one bench: GitHub.com AppSec plus GitHub Advanced Security as product
The first conversation in any GitHub Security Engineering interview is the team-match: are you interviewing into the team that defends GitHub.com itself, or the team that ships GitHub Advanced Security (GHAS) as product to enterprise customers? Senior+ candidates are expected to know the difference and name a preference grounded in a credible technical reason, not whatever you have open
.
- Internal AppSec for GitHub.com. GitHub.com is one of the most-targeted developer platforms on the public internet; the canonical home of open-source source code, build artifacts, and CI/CD configuration for a meaningful share of the software industry. The internal AppSec team owns the threat model for the GitHub.com codebase (Ruby on Rails primary, Go for many services, TypeScript on the frontend), the secure-SDLC integration, the bug-bounty triage process via the GitHub Bug Bounty program, and incident response on the platform. The engineering blog at github.blog/engineering publishes regular security-focused posts that surface what the team is actually working on; reading 6-12 months of recent posts is the highest-signal preparation for this track.
- GitHub Advanced Security (GHAS) product engineering. The product surface includes code scanning powered by CodeQL, secret scanning, Dependabot (alerts plus automatic version updates), supply-chain security around dependency review and GitHub Actions, and the security-overview / risk-management features that aggregate findings for enterprise customers. Engineering work on GHAS is split across the analysis-engine team (the CodeQL engine, language packs, and query infrastructure), the query-authoring team (the open-source CodeQL queries GitHub Security Lab publishes), the secret-scanning team (pattern matching, validity checking, partner integrations), and the Dependabot / supply-chain team (advisory ingestion, CVE matching, automated PR generation).
- GitHub Security Lab. The Lab is a research-oriented team that authors original CodeQL queries for newly-discovered vulnerability classes, publishes CVE advisories on real bugs found in open-source projects, and contributes to the broader vulnerability-research ecosystem. The Lab's canonical public surface is securitylab.github.com with the open-source research repository at github.com/github/securitylab. Lab engineers publish under their own bylines on Lab advisories; the public CVE disclosure is the load-bearing artifact of the role.
- Supply-chain and platform-trust tracks. npm registry security (GitHub operates the npm registry post-2020 acquisition), GitHub Actions runner safety and provenance, GitHub Packages, and the Sigstore / SLSA contributions GitHub publishes through. These tracks blend security-engineering craft with distributed-systems work at ecosystem scale; the GitHub Octoverse annual report decomposes the security-relevant ecosystem data the team operates against (open-source dependency growth, security-advisory volume, Dependabot adoption).
Three artifacts make GitHub's security posture legible from outside before you ever talk to a recruiter:
- The GitHub engineering blog at github.blog/engineering. Heavy security content; incident write-ups, CodeQL deep-dives, supply-chain analysis, and feature-engineering posts. The vocabulary on the blog is the vocabulary in the interview loop.
- The GitHub Security Lab CVE advisory stream. Lab engineers publish coordinated-disclosure advisories under their bylines. Reading five or six recent advisories teaches you the Lab's research voice, the level of CodeQL detail expected, and the disclosure-process discipline.
- The open-source CodeQL queries at github.com/github/codeql. The query packs GHAS ships are public and reviewable. Reading queries in your language of interest (JavaScript, Java, Python, C/C++, Go, Ruby, Swift, Kotlin) before a CodeQL-track interview is the highest-apply prep you can do.
CodeQL: the engineering craft at the center of GHAS
If you interview into the GHAS analysis-engine team or the GitHub Security Lab, CodeQL is the central craft. CodeQL is GitHub's semantic code-analysis engine: source code is compiled into a relational database, queries written in the QL language traverse that database to find vulnerability patterns, and the results surface as code-scanning alerts in pull requests. The query language, the standard libraries, and the language packs are documented at codeql.github.com.
Three vocabularies the senior+ CodeQL bar assumes fluency in:
- Taint tracking and dataflow. Most security-relevant CodeQL queries are dataflow or taint-tracking queries: a source (user-controlled input), a sink (dangerous operation), and a path between them through the program's dataflow graph. Reasoning about source / sink / sanitizer modeling, field-sensitive dataflow, summary nodes for library code, and the difference between local and global dataflow is the senior bar. The CodeQL standard library exposes
DataFlowandTaintTrackingmodules per language; reading them is non-negotiable. - Control-flow and call-graph reasoning. Beyond dataflow, queries reason about control-flow graphs, the call graph, exception flow, and language-specific constructs (Java reflection, JavaScript prototype mutation, Python
__getattr__magic, Ruby method-missing, C/C++ pointer aliasing). Each language pack has an AST and an IR layer engineers query against; the query author is expected to know the abstraction level appropriate for the bug class being modeled. - Query performance and false-positive discipline. CodeQL queries run at scale on every pull request that has code scanning enabled. A query that explodes in run-time on a large codebase or that generates a high false-positive rate is a production problem, not an academic one. Senior+ candidates are expected to reason about query cost, predicate tabulation, and the false-positive / false-negative trade-off explicitly.
The bug classes CodeQL queries target map directly onto the OWASP Top 10 and the MITRE CWE taxonomy: SQL injection (CWE-89), command injection (CWE-78), cross-site scripting (CWE-79), path traversal (CWE-22), insecure deserialization (CWE-502), SSRF (CWE-918), broken access control, and the supply-chain-adjacent classes (CWE-1357 reliance on insufficiently-trustworthy components). Senior+ candidates are expected to reason at both the OWASP / CWE level (what is the bug class) and the CodeQL level (how do we model it as a dataflow query).
The GitHub Security Engineer interview loop
The interview loop varies by track, but the senior+ loop typically runs five to six rounds across two days (or two virtual half-days):
- An AppSec depth round. 60 minutes. The shape is OWASP Top 10 fluency at the standards level; not
name the ten
, butwalk me through how broken access control manifests in a Rails controller, what the canonical mitigation patterns are, and where they typically fail in production.
Threat-modeling exercises (STRIDE-style decomposition of a hypothetical GitHub.com feature) are common. OWASP ASVS is the audit-rubric vocabulary expected. - A code-review-at-scale round. 60 minutes. CodeQL is the team's craft, and the interview reflects that: candidates are given a snippet (Ruby, Go, TypeScript, Java, or Python depending on track) and asked to identify the vulnerability class, propose the fix, and reason about how a static analyzer would detect the pattern. For CodeQL-track candidates, this round may include writing or reading CodeQL itself; for AppSec / internal-security tracks, the focus is on review judgment.
- A coding round. 60-90 minutes. Distributed-systems-flavored coding in Ruby, Go, or TypeScript depending on team. Senior+ Security Engineers at GitHub are real software engineers; the coding bar is non-negotiable, and candidates without production polyglot fluency typically do not clear it. For analysis-engine and CodeQL-engine tracks, the coding round may go deeper into compiler / static-analysis territory (AST traversal, dataflow fixed-point computation, query planning).
- A systems-design round. 60 minutes.
Design the secret-scanning service for GitHub.com
ordesign the dependency-review pipeline that runs against every pull request
ordesign the coordinated-disclosure workflow for a newly-reported vulnerability in a dependency that affects millions of repos.
The screen is for scale-aware systems thinking with explicit security constraints (tenant isolation, privacy of customer code, abuse resistance, integrity of the disclosure process). - A behavioral round. STAR-format stories on commanding a security incident, disagreeing well with a peer engineer on a vulnerability-severity call, working through a release decision under coordinated-disclosure deadline pressure, and (for Lab / supply-chain tracks) reasoning about the disclosure ethics of a finding that affects an open-source maintainer with limited resources. Honest reflection on past calls; what you got right, what you got wrong, what you would design differently; is the bar.
- A deep-dive on past production work. Walk through a security feature you shipped, an incident you commanded, a CVE you researched and disclosed, or a CodeQL query you authored that closed a real coverage gap. Expect
where did your model have a gap, and how did you discover it
,what did the post-mortem reveal that the runbook did not
, andwhat would you do differently with another year.
Two preparation patterns separate candidates who clear the GitHub senior bar:
- Read the GitHub Security Lab CVE advisory stream and the open-source CodeQL queries. The advisories at securitylab.github.com and the queries at github.com/github/codeql are the team's actual public output. The vocabulary you absorb (taint source, sink, sanitizer, dataflow predicate, language-pack, query suite, result format) is the vocabulary the interviewer uses.
- Build credible production-impact stories that fit the track. For internal-AppSec tracks: a security review you led that prevented a real bug class from shipping, an incident you commanded, a secure-SDLC integration you drove. For CodeQL / Lab tracks: a CVE you researched and disclosed, a custom static-analysis query you authored, or a vulnerability-class taxonomy you contributed to. For supply-chain tracks: a registry-abuse mitigation, a provenance / signing system you shipped, or a coordinated-disclosure process you designed.
Compensation: anchor on levels.fyi GitHub and Microsoft filters
Total compensation for a Security Engineer at GitHub in 2026 varies materially by track (internal AppSec vs. GHAS analysis-engine vs. Security Lab vs. supply-chain), level, equity package, and geography. Single-number claims (Security Engineer at GitHub pays $X
) are unreliable and explicitly out of scope for this page.
The accurate anchor is the levels.fyi per-company filter, with two readings:
- levels.fyi/companies/github. The GitHub-specific filter, with the Software Engineer track filter applied at the specific level you are negotiating. Security Engineering at GitHub typically sits on the engineering ladder rather than a separate Security Engineer track, so the Software Engineer filter is more reliably populated than a Security-Engineer filter.
- levels.fyi/companies/microsoft. Post-Microsoft-acquisition (closed October 2018), GitHub leveling is mapped onto Microsoft's IC ladder for many tracks (SDE / SDE II / Senior / Principal / Partner). Cross-checking the Microsoft filter at the equivalent IC level is the standard sanity check on a GitHub recruiter's quoted band, especially at Senior and Staff (Principal in Microsoft terms) levels.
Microsoft is a public company (NASDAQ: MSFT); RSU vest is liquid on grant-anniversary, which materially changes negotiation math compared to a private-company stock-option package. GitHub-specific equity treatment post-acquisition (signing bonus to bridge the cliff, refresh schedule, performance-bonus structure) is the load-bearing negotiation lever; the public bands on levels.fyi are the floor, not the ceiling.
For broader-industry baseline cross-check: per the BLS Occupational Outlook Handbook for Information Security Analysts (SOC 15-1212), the May 2024 median annual wage was $124,910, employment is projected to grow 29 percent from 2024 to 2034 (much faster than the average for all occupations), and about 16,000 openings are projected each year on average across the decade. The BLS code under-counts FAANG-tier and platform-company compensation because it covers a broader analyst-and-engineer population, but it anchors the realistic industry-wide distribution outside the developer-platform cohort.
Supply-chain security and the post-acquisition MSRC alignment
Two contextual realities shape Security Engineering at GitHub in 2026 in ways candidates should understand before the interview loop.
Supply-chain security is a first-class track. GitHub operates the npm registry, GitHub Actions, GitHub Packages, and the broader open-source dependency graph for a meaningful share of the software industry. The supply-chain Security Engineering team works on registry-abuse detection (typosquatting, malicious-package campaigns), Actions-runner sandboxing and provenance, package signing and verification (GitHub contributes to Sigstore and the SLSA framework), and the dependency-review pipeline that surfaces vulnerable transitive dependencies in pull requests. The Octoverse annual report publishes ecosystem-scale security data the team operates against; reading the most recent Octoverse security-section before any supply-chain-track interview is the canonical preparation.
Post-Microsoft-acquisition, GitHub's security program aligns with MSRC. The Microsoft Security Response Center (MSRC) is the coordinated-disclosure and incident-response hub for Microsoft's product portfolio, and GitHub's vulnerability handling for product issues runs through the same coordinated-disclosure framework. Senior+ candidates interviewing into incident-response or vulnerability-disclosure tracks should understand that the operational model is GitHub-product-cadence with MSRC-coordinated escalation, not standalone. The behavioral round may probe how you reason about disclosure timelines, customer communication, and the trade-offs of coordinated vs. immediate disclosure.
For candidates joining post-acquisition, two preparation reads pay off in the loop. First, a recent set of GitHub Security Lab advisories; the Lab's published disclosure cadence reflects how GitHub thinks about coordinated disclosure on third-party open-source. Second, a recent set of github.blog/engineering security posts on supply-chain or platform-trust; these surface the team's current investments and the vocabulary used in design reviews and incident retros. Speculation beyond what GitHub has published is not load-bearing in an interview; the Lab advisories and the engineering blog are the canonical public surface.
Frequently asked questions
- What is the difference between Security Engineering at GitHub and a generic AppSec role?
- GitHub Security Engineering operates at two stakes simultaneously. First, the platform-defense stake: GitHub.com hosts a meaningful share of the open-source software industry's source code, build artifacts, and CI/CD configuration, which makes the platform one of the most-targeted developer surfaces on the public internet. Second, the product stake: GitHub Advanced Security (code scanning powered by CodeQL, secret scanning, Dependabot, supply-chain security) is sold to enterprise customers, so Security Engineering ships product, not just internal guardrails. Senior+ candidates pick a track at the recruiter screen; internal AppSec for GitHub.com, GHAS analysis-engine, GitHub Security Lab research, or the supply-chain / platform-trust tracks.
- What product surfaces does GitHub hire Security Engineers across?
- Internal AppSec for GitHub.com itself (the Ruby on Rails monolith, the Go services, the TypeScript frontend, the build-and-deploy infrastructure); GitHub Advanced Security product engineering (CodeQL analysis engine, secret scanning, Dependabot, supply-chain features, security-overview surfaces); GitHub Security Lab research (CodeQL query authoring, CVE disclosures on third-party open-source, GitHub Bug Bounty); supply-chain and platform-trust (npm registry security, GitHub Actions runner safety, GitHub Packages provenance, Sigstore / SLSA contributions); and abuse-and-trust-and-safety. github.com/about/careers is the canonical live source for what is open.
- What does the CodeQL-track interview screen for?
- Static-analysis fluency at the query-language level. Senior+ candidates are expected to reason about taint tracking (sources, sinks, sanitizers, dataflow predicates), control-flow and call-graph analysis, language-pack-specific constructs (Java reflection, JavaScript prototype mutation, Python descriptor magic, Ruby method-missing, C/C++ pointer aliasing), and the false-positive / false-negative / query-performance trade-offs at production scale. The bug classes map onto OWASP Top 10 and MITRE CWE; the expected fluency is at both levels (the security vocabulary AND the CodeQL modeling vocabulary). Reading the open-source CodeQL queries at github.com/github/codeql in your language of interest before the loop is the highest-apply prep.
- What does the GitHub.com internal-AppSec interview loop screen for?
- OWASP Top 10 fluency at the standards level (not memorized list, but explicit reasoning about how each class manifests in a Rails / Go / TypeScript polyglot codebase), threat-modeling craft (STRIDE-style decomposition of a hypothetical GitHub.com feature), code-review judgment (CodeQL is the team's tool, and they expect candidates who can reason about static-analysis coverage, not just consume it), distributed-systems coding fluency, and a behavioral round that frequently includes a coordinated-disclosure or supply-chain scenario. OWASP ASVS is the audit-rubric vocabulary; the github.blog/engineering security posts surface the actual review patterns the team uses.
- What does the GitHub Security Lab interview screen for?
- Vulnerability-research craft and CodeQL fluency. The Lab publishes original CodeQL queries for newly-discovered vulnerability classes and discloses CVEs in third-party open-source projects, so the senior bar is research depth (read past advisories at securitylab.github.com to absorb the voice and rigor), CodeQL authoring at the standard-library level (taint-tracking modules, dataflow predicates, language-pack internals), and disclosure-process discipline (coordinated disclosure, communication with maintainers, ethical handling of findings that affect resource-constrained open-source projects). Lab engineers publish under their own bylines on Lab advisories; public CVE disclosure track record is the load-bearing portfolio artifact.
- What does the supply-chain / platform-trust track screen for?
- Registry-abuse reasoning (typosquatting, malicious-package campaigns, dependency confusion), Actions-runner sandboxing and provenance, package-signing and verification ecosystems (Sigstore, SLSA), and ecosystem-scale data work; GitHub's supply-chain team operates against the data Octoverse publishes annually (open-source dependency growth, security-advisory volume, Dependabot adoption). The bar blends Security Engineering craft with distributed-systems coding fluency. Reading the most recent Octoverse security-section at github.blog/news-insights/octoverse and a sampling of recent github.blog/engineering supply-chain posts is the canonical preparation.
- How does the post-Microsoft-acquisition reality affect Security Engineering at GitHub?
- GitHub's vulnerability handling for product issues aligns with the Microsoft Security Response Center (MSRC) for coordinated disclosure, and the compensation ladder maps onto Microsoft's IC track for many roles. Operationally: Security Engineering still operates at GitHub-product cadence (the engineering culture, the product roadmaps, the internal review processes are GitHub's), but coordinated-disclosure escalation and incident response on the highest-severity issues run through the same MSRC framework that handles Microsoft product disclosures. For compensation: cross-check the levels.fyi GitHub filter against the levels.fyi Microsoft filter at the equivalent IC level. The post-acquisition equity treatment (signing bonus to bridge the cliff, refresh schedule, MSFT RSU vest schedule) is the load-bearing negotiation lever.
- How important is open-source contribution evidence for a GitHub Security Engineering role?
- It varies by track. For GitHub Security Lab and the CodeQL-authoring tracks, public open-source contribution; published CVE disclosures, original CodeQL queries, vulnerability-class taxonomies, talks at security conferences; is close to necessary at the senior level. The Lab's role is publishing public research, and a candidate without a public research portfolio is hard to evaluate against the role. For internal-AppSec on GitHub.com and for GHAS product-engineering tracks, public open-source contribution is positive signal but not load-bearing; credible production-impact stories on internal security work substitute. For supply-chain tracks, contribution to the broader supply-chain security ecosystem (Sigstore, SLSA, OpenSSF projects) is increasingly weighted.
- How does compensation work at GitHub specifically?
- Anchor on the levels.fyi GitHub per-company page at levels.fyi/companies/github with the Software Engineer filter applied (Security Engineering at GitHub typically sits on the engineering ladder, not a separate Security Engineer track). Cross-check against levels.fyi/companies/microsoft at the equivalent IC level; post-acquisition, the GitHub leveling maps onto Microsoft's IC ladder for many tracks (SDE / SDE II / Senior / Principal / Partner). Microsoft is public (NASDAQ: MSFT), so RSUs are liquid on vest, which simplifies negotiation against a private-company offer. The signing bonus to bridge the four-year cliff is frequently the most-negotiable lever. Single-number claims for Security Engineer at GitHub total comp are unreliable and explicitly out of scope for this page.
- What public artifacts should a GitHub Security Engineer candidate read deeply?
- Four. First, github.blog/engineering; heavy security content, recent posts surface what the team is actually working on. Second, the GitHub Security Lab advisory stream at securitylab.github.com; the Lab publishes coordinated-disclosure CVE advisories under engineer bylines and these are the canonical research voice of the team. Third, the open-source CodeQL queries at github.com/github/codeql; the actual production query packs, reviewable in your language of interest before any CodeQL-track interview. Fourth, the most recent GitHub Octoverse annual report at github.blog/news-insights/octoverse; the ecosystem-scale security data the supply-chain team operates against, and the canonical public artifact for understanding what GHAS adoption and Dependabot impact look like at scale.
Sources
- GitHub Engineering Blog; security and infrastructure posts
- GitHub Security Lab; research, CodeQL queries, CVE advisories
- GitHub Security Lab open-source research repository
- CodeQL documentation; query language, libraries, language packs
- GitHub Octoverse; annual report on the open-source ecosystem
- GitHub Careers; current Security Engineer / engineering openings
- levels.fyi; GitHub per-company compensation filter
- levels.fyi; Microsoft per-company compensation filter (post-acquisition cross-check)
- OWASP Top 10; canonical web-application vulnerability classes
- MITRE CWE; Common Weakness Enumeration taxonomy
- BLS Occupational Outlook Handbook; Information Security Analysts (SOC 15-1212)
About the author. Blake Crosley founded ResumeGeni and writes about security engineering, hiring technology, and ATS optimization. More writing at blakecrosley.com.