Back to blog
Guide
FalcovsTetragon
GuideSeptember 6, 20268 min read

Falco vs Tetragon: what to evaluate for runtime security

Compare detection workflows, policy, enforcement, and operational requirements when evaluating Falco and Tetragon.

Abdullah Kucukoduk · Senior Platform Engineer

Falco and Tetragon support different runtime security workflows. Evaluate the events you need, how you will maintain detection or tracing policy, how findings reach responders, and whether you need kernel enforcement. Test those requirements against your own workloads.

Open-source runtime detection engine driven by YAML rules

  • Open source · Apache-2.0
  • CNCF graduated
  • eBPF probe or kernel module

Open-source eBPF security observability and runtime enforcement

  • Open source · Apache-2.0
  • Cilium project · CNCF
  • eBPF with in-kernel filtering

01

What each project is

Falco is a CNCF graduated runtime security project. It consumes events, most commonly system calls collected by a kernel driver or eBPF probe, and evaluates them against a rule set written in YAML: conditions built from fields, macros, and lists, with exceptions for legitimate cases. When a condition matches, Falco emits an alert with the fields named in the rule's output template, and downstream tooling routes it.

Tetragon is an eBPF-based security observability and runtime enforcement project from the Cilium community, also hosted by the CNCF. It is configured through tracing policies: Kubernetes resources that select kernel functions or tracepoints, filter their arguments in the kernel, and optionally attach actions. Events are emitted as JSON, enriched with process and Kubernetes identity, and some actions can enforce directly in the kernel.

The two are not interchangeable and not strictly competitors. Falco's center of gravity is a detection rule library with a large default set. Tetragon's center of gravity is precise kernel-level observation with the option to enforce. Teams run one, the other, or both.

02

Evaluation dimensions

Score nothing. Instead, write down what you need in each dimension, then run the practical test in the last column on a representative workload.

Evaluation dimensionFalcoTetragonPractical test
SensoreBPFor kernel moduleModern eBPF probe, legacy eBPF probe, or kernel module; plugins for other sourceseBPFeBPF programs on the kernel hooks your policies select; in-kernel argument filteringConfirm driver or BTF support on your kernel versions before anything else
Detection and policyRulesRule conditions with macros, lists, and exceptions; published rule maturity guidanceTracing policiesTracing policies with event selection and actionsExpress one relevant scenario and a benign look-alike
ResponseExternal toolingAssess the specific external response tooling you would deploy; do not label it universally incapableSignals · overridesSupports return-value overrides and signal actionsVerify whether the operation is prevented and how the application handles it
InvestigationOutput fieldsInspect fields emitted by the selected event source and rulesJSON eventsInspect fields emitted by the selected tracing policyCan responders identify workload and observed sequence?
Performance impactMeasure itScales with event volume, rule count, and driver; drops events under pressureMeasure itScales with the hooks selected; in-kernel filtering reduces volumeMeasure CPU, memory, and event loss on one representative node per class
System stability impactUserspace engineUserspace engine; never blocks a workload; kernel module carries more risk than eBPF probesIn-kernel enforcementIn-kernel enforcement can fail an operation the application did not expectRoll out any enforcement in observe or audit form first; test the failure path
OperationsYou operate itMaintain rules, exceptions, and output plumbingYou operate itMaintain tracing policies and kernel compatibilityValidate change rollout and rollback

Chips describe status and scope, not a score. Performance and stability rows are things to measure in your environment, not vendor figures.

03

When Falco fits

Falco is a candidate when the team wants a rule-driven detection workflow and is prepared to maintain the surrounding pipeline: the ruleset and its exceptions, the alert routing, and whatever response tooling the team chooses. The default ruleset gives a broad starting point, and the rule language is readable by analysts who do not work in the kernel.

Expect to spend the early weeks tuning. The published style guide and exceptions mechanism exist because tuning is part of operating Falco, not a sign that something is wrong.

04

When Tetragon fits

Tetragon is a candidate when kernel-level observability and policy-controlled enforcement are central requirements: when the team needs to see specific kernel functions with their arguments, filter at the source to control event volume, or deny an operation in the kernel rather than react after the fact.

Expect the policy authoring to require kernel knowledge. Selecting the right hook, understanding its arguments, and confirming that an override is safe on your kernel version are engineering tasks, and each policy should be tested for both detection and enforcement behavior.

05

What your SOC still needs to investigate

Neither project closes an investigation on its own. Both produce events with process and container identity; both leave the join to a request, the workload's owner, the image's vulnerability status, and the outcome of an attempted operation to the responder or to other systems.

Whichever you choose, plan for the questions that follow an alert: which service is this, which request caused it, did the attempted action succeed, what happened next, and what evidence might be missing. If those answers live in five tools, the sensor choice is only part of the design.

  • Workload ownership and image version: from your Kubernetes and CI metadata.
  • Request context: from application tracing or access logs, where instrumented.
  • Outcome of an attempted operation: from the event's return value where captured, otherwise from network or file-system logs.
  • Related events in order: joined by process tree and time, not by alert title.
app.primod.io / runtime / alerts / checkout-service
Runtime alert HighIllustrative scenario · Product UI preview

Web process launched a shell

Workload
checkout-service · Deployment
Namespace
production
Process chain
web worker → /bin/sh
Observed activity
Shell launch followed by a token read and an outbound connection attempt
Interpretation
Consistent with suspicious command execution and credential access
Response
Observe — no action blocked

Where it ran

Podcheckout-service-7d9f6c-x2k4p
Nodenode-pool-b-03
Containercheckout
Image digestsha256:9f2c…a1e0

Request context

Method · route: POST /api/upload

Trace · span: supplied by instrumentation

Detection details

Rule: rce-shell-web-ancestor · rev 3

Technique mapping: as provided by the rule

Evidence quality

Complete · Process ancestry complete for this alert

Limited · Some events may be missing: capture reported lost events on this node during the window

The questions after an alert, answered in one place: this is what a platform adds above either sensor. Illustrative scenario · Product UI preview.

06

A reproducible evaluation checklist

Run the same checklist against both projects on the same cluster and the same workloads. Record versions, kernel, and dates so the comparison can be repeated after an upgrade.

  • Pin versions: project release, kernel version, driver or BTF availability, Kubernetes version.
  • Pick three scenarios that matter to you (for example a shell from a web process, a sensitive file read, an unexpected outbound connection) and one benign look-alike for each.
  • Write the rule or policy for each scenario; note how long it took and what knowledge it needed.
  • Run the attack case and the benign case; record fire / no-fire for each.
  • If you need enforcement, verify the operation is prevented and observe how the application behaves when it receives the error.
  • Measure CPU, memory, and event volume on a representative node before and during the test; do not extrapolate to the whole fleet from one node.
  • Send the output to your responders and ask them to identify the workload and the sequence without help.
  • Change one rule or policy and roll it out; confirm the change took effect where expected and nowhere else.

Sources and references

  1. Tetragon: enforcement (signals and return-value overrides)

    Tetragon documentation

  2. Tetragon: tracing policies

    Tetragon documentation

  3. Falco rules reference

    Falco documentation

  4. Falco rules: basic elements

    Falco documentation

Keep reading

More from the blog

All articles