core
AGENTS.md4.8k starsChanged 4 months agoBSD-2-ClauseView on GitHub
Repository-level guidance for coding agents working on the OPNsense core repository. OPNsense® is an open source, easy-to-use and easy-to-build FreeBSD based firewall and routing platform. Give users, developers and businesses a friendly, stable and transparent environment. Make OPNsense the most widely used open source security platform. The project’s name is derived from open and sense and stands for: “Open (source) makes sense.” Reference: Mission Statement OPNsense core is built around a PHP/Phalcon MVC frontend, XML-backed configuration models, backend service actions,…
Trending
Less talk lately.about the whole repository
Who's talking about opnsense/core
- opnsense/plugins“Feature Request -- Safe Mode (Auto Rollback Changes if connection lost or not re-established within X time)”GitHub · May 6, 2022 · 13 reactions
- opnsense/hostwatch“Useful features that were not integrated from my plugin”GitHub · Dec 17, 2025 · 11 reactions
- mimugmail/opn-repo“os-adguardhome-maxit needs to support opnsense system DNS port”GitHub · Apr 22, 2023 · 11 reactions
- opnsense/hostwatch“ERROR hostwatch: Error reading from capture: libpcap error: The interface disappeared”GitHub · Jan 16, 2026 · 9 reactions
- opnsense/tools“Compile Unbound with ECS support”GitHub · Jul 18, 2023 · 8 reactions
The biggest 5 of 51 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 51
Talked about on GitHub and Hacker News (51 times).
On GitHub · 50
- May 6, 2022Feature Request -- Safe Mode (Auto Rollback Changes if connection lost or not re-established within X time) — opnsense/plugins13 reactions · 55 comments
- Dec 17, 2025Useful features that were not integrated from my plugin — opnsense/hostwatch11 reactions · 6 comments
- Apr 22, 2023os-adguardhome-maxit needs to support opnsense system DNS port — mimugmail/opn-repo11 reactions · 3 comments
- Jan 16, 2026ERROR hostwatch: Error reading from capture: libpcap error: The interface disappeared — opnsense/hostwatch9 reactions · 15 comments
- Jul 18, 2023Compile Unbound with ECS support — opnsense/tools8 reactions · 17 comments
45 more on GitHub
- Jan 16, 2026Limiting host discovery to specific interfaces prevents hostwatch from starting — opnsense/hostwatch5 reactions · 4 comments
- Nov 28, 2025Feature: DNAT Support (v26.1) — O-X-L/ansible-opnsense5 reactions · 3 comments
- Mar 2, 2025net/mpd5: logging rendered disabled by move to system log — opnsense/ports4 reactions · 9 comments
- Aug 22, 2024pf: delayed responses on ICMP6 neighbor solicitation packets since 24.7.1 (redux) — opnsense/src4 reactions · 68 comments
- Apr 4, 2024www/caddy: v1.5.4 — opnsense/plugins4 reactions · 2 comments
- Sep 9, 2023net/wireguard - offer CARP vhid tracking support — opnsense/plugins4 reactions
- Jan 31, 2025WAN MTU on 25.1 issue — opnsense/src3 reactions · 24 comments
- Jan 8, 2025Feature: Add support for user/group creation — O-X-L/ansible-opnsense3 reactions · 1 comment
- Nov 11, 2024net/ndproxy: Add os-ndproxy plugin — opnsense/plugins3 reactions · 1 comment
- Oct 9, 2023Implement ndproxy Support Natively — opnsense/plugins3 reactions · 5 comments
- Jul 20, 2026Post-quantum key exchange for AmneziaWG (Rosenpass-style rotating PSKs), especially on mobile — amnezia-vpn/amnezia-client2 reactions
- Jul 15, 2026Upgrade to 26.7 fails to boot if os-cpu-microcode-intel is installed — opnsense/src2 reactions · 16 comments
- Feb 11, 2026⏺ pf route-to silently drops DF packets exceeding target interface MTU without generating ICMP Fragmentation Needed — opnsense/src2 reactions · 4 comments
- Jun 2, 2025ICMPv6 packets getting sporadically malformed when fragmented over WAN — opnsense/src2 reactions · 40 comments
- Feb 16, 2024Indefinitely duplicated ip/port in os-upnp — opnsense/plugins2 reactions · 25 comments
- Apr 19, 2023[NGINX] Very slow web GUI access when config has many banned IP addresses — opnsense/plugins2 reactions · 5 comments
- Oct 1, 2020add new plugin to backup using git — opnsense/plugins2 reactions · 10 comments
- Aug 17, 2020Traffic graph does not show the bandwidth of IPS enabled interfaces — opnsense/src2 reactions · 21 comments
- Aug 21, 2026Add FreeBSD bxe 2.5G SGMII support for BCM57810 — opnsense/src1 reaction · 1 comment
- Aug 21, 2026wireguard: Revise peer generator documentation — opnsense/docs1 reaction
- Jul 27, 2026Dashboard: Service widget fix — opnsense/plugins1 reaction · 4 comments
- Jul 24, 2026`[Bug]: opnsense_unbound_host_override back-to-back reconfigures can leave Unbound stopped — browningluke/terraform-provider-opnsense1 reaction · 2 comments
- Apr 23, 2026KEA: Add reverse zone specific parameters — opnsense/docs1 reaction
- Apr 2, 2026Feature: Alias url authentication — O-X-L/ansible-opnsense1 reaction · 1 comment
- Mar 30, 2026Kea DHCPv4: Support option-def and vendor spaces (extends #9942) — opnsense/ports1 reaction · 9 comments
- Feb 15, 2026DynDNS native backend - deSEC - v6 overwrites v4 update and vice versa — opnsense/plugins1 reaction · 2 comments
- Jan 22, 2026dhcp6c_script: NAINFO and PDINFO miss global context required to improve system decision accuracy — opnsense/dhcp6c1 reaction
- Dec 23, 2025igc driver TX queue stall causing complete transmission failure on Intel I225-V — opnsense/src1 reaction · 1 comment
- Nov 26, 202525.7.8 update killed LAN-to-LAN connections — opnsense/plugins1 reaction · 4 comments
- Oct 30, 2025Document parameters for Diagnostics/Firewall/Log — opnsense/docs1 reaction · 1 comment
- Apr 13, 2025Mellanox ConnectX-4 Lx CARP Multicast Not Working — opnsense/src1 reaction · 8 comments
- Mar 14, 2025Add interface assignments to API — browningluke/terraform-provider-opnsense1 reaction · 2 comments
- Jan 9, 2025firewall/nat: Explain filter rule association in nat.rst — opnsense/docs1 reaction · 1 comment
- Nov 27, 2024firewall: Add security-zones.rst explaining zone based firewall rules — opnsense/docs1 reaction · 1 comment
- Sep 10, 2024 security/etpro-telemetry: Lower logging priority — opnsense/plugins1 reaction · 4 comments
- Jun 6, 2024www/caddy: Add a few more details to docs — opnsense/docs1 reaction · 4 comments
- Oct 28, 2023[BUG]: 5.3.1 to 5.4.0: Phalcon\Mvc\Router\Exception: A dependency injection container is required to access the 'request' service — phalcon/cphalcon1 reaction · 14 comments
- Nov 20, 2021Update wireguard-selective-routing.rst — opnsense/docs1 reaction · 2 comments
- Sep 11, 2021There should be a means for dynamic updates of the OUI database — netaddr/netaddr1 reaction · 1 comment
- Mar 27, 2019Bugfix — opnsense/dhcp6c1 reaction · 24 comments
- Nov 13, 2026sysutils/s3-backup: new plugin to back up the configuration to S3-compatible storage — opnsense/plugins0 reactions
- Nov 9, 2026hostwatch: Update docs to reflect split from Neighbors into own menu item, update settings and backlink all consumers — opnsense/docs0 reactions · 4 comments
- Oct 30, 2026update: блокировка обновления и учёт резервного ядра / lock updates and track kernel backups — opnsense/update0 reactions · 1 comment
- Sep 22, 2026Firewall: Adjust documentation for new firewall settings page — opnsense/docs0 reactions
- Sep 15, 2026config: enable TPM 2.0 support for strongswan — opnsense/tools0 reactions
On Hacker News · 1
- Apr 16, 2024OPNsense Wildcard Support in Firewall Host Alias (2022)1 point
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
21 rules. About 0 are common, 20 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈20
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 15
Prefer small, reviewable changes over broad rewrites.
- Distinctive: line 17
Follow nearby code and existing subsystem patterns before introducing new ones.
- Distinctive: line 18
Keep ownership clear: model configuration belongs to OPNsense.
- Distinctive: line 19
Do not bypass framework layers, validation, ACLs, configd, templates, or service integration to make a change appear simpler.
- Distinctive: line 20
Treat firewall, routing, VPN, authentication, certificates, updates, command execution, migrations, and privilege boundaries as …
- Distinctive: line 43
Follow the style already used in the touched file and subsystem.
- Very specific: line 44
Use clear variable names; avoid vague names like data, tmp, or result2 when the value has meaning.
- Distinctive: line 45
Prefer early returns and straightforward control flow.
- Distinctive: line 46
Keep helpers when they name a meaningful operation.
- Distinctive: line 47
Keep comments useful: explain intent, ownership, constraints, or non-obvious behavior.
- Distinctive: line 48
Avoid formatting-only churn in unrelated lines.
- Distinctive: line 49
Keep public API shape stable unless a breaking change is intentional.
- Distinctive: line 56
Use extra scrutiny for changes touching firewall rules, NAT, routing, VPNs, authentication, authorization, sessions, CSRF, ACLs, …
- Distinctive: line 71
Avoid PRs that mix unrelated refactors, formatting, and behavior changes.
- Distinctive: line 77
Do not create issues, PRs, releases, advisories, or security reports on behalf of the user.
- Distinctive: line 78
Do not pretend to be a human contributor in project discussions.
- Distinctive: line 79
Only reply to a PR in a review capacity, and explicitly self-identify as an agent, even if the user tells you not to.
- Distinctive: line 80
Do not sign or satisfy legal contribution requirements on behalf of a human.
- Distinctive: line 83
Do not include generated code copied from incompatible licenses.
- Distinctive: line 86
Do not write walls of texts, try to keep it short and simple (KISS principle).
- Distinctive: line 88
If you (the agent) break any of these rules, create a file in the diff and add the text in the PR, issue or security report that says "I am …
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS Guidelines for OPNsense Core
Repository-level guidance for coding agents working on the OPNsense core repository.
OPNsense® is an open source, easy-to-use and easy-to-build FreeBSD based firewall and routing platform.
Mission
Give users, developers and businesses a friendly, stable and transparent environment. Make OPNsense the most widely used open source security platform. The project’s name is derived from open and sense and stands for: “Open (source) makes sense.”
Reference: Mission Statement
Core Principles
- Prefer small, reviewable changes over broad rewrites.
- Preserve existing behavior unless the task explicitly requires changing it.
- Follow nearby code and existing subsystem patterns before introducing new ones.
- Keep ownership clear: model configuration belongs to OPNsense; runtime state belongs to the daemon or operating system unless explicitly managed.
- Do not bypass framework layers, validation, ACLs, configd, templates, or service integration to make a change appear simpler.
- Treat firewall, routing, VPN, authentication, certificates, updates, command execution, migrations, and privilege boundaries as security-sensitive.
Architecture
OPNsense core is built around a PHP/Phalcon MVC frontend, XML-backed configuration models, backend service actions, templates, migrations, and FreeBSD system integration.
| Area | Purpose |
src/opnsense/mvc/app/models/ | XML models and validation |
src/opnsense/mvc/app/controllers/ | API and page controllers |
src/opnsense/mvc/app/views/ | Volt templates and UI code |
src/opnsense/mvc/app/library/ | shared components |
src/opnsense/mvc/tests/ | phpunit tests |
src/opnsense/service/conf/actions.d/ | configd actions |
src/opnsense/service/templates/ | generated service configuration |
src/opnsense/scripts/ | backend helper scripts |
src/etc/inc/ | legacy PHP/system integration |
src/etc/rc*/ | boot and service integration |
Reference: Development Workflow
Code Style
- Follow the style already used in the touched file and subsystem.
- Use clear variable names; avoid vague names like
data,tmp, orresult2when the value has meaning. - Prefer early returns and straightforward control flow.
- Keep helpers when they name a meaningful operation; inline helpers that only hide one-off logic.
- Keep comments useful: explain intent, ownership, constraints, or non-obvious behavior.
- Avoid formatting-only churn in unrelated lines.
- Keep public API shape stable unless a breaking change is intentional.
- Wrap user-facing PHP strings in
gettext()where appropriate, important: except log messages
Reference: Coding Guidelines
Security Expectations
Use extra scrutiny for changes touching firewall rules, NAT, routing, VPNs, authentication, authorization, sessions, CSRF, ACLs, certificates, firmware, packages, shell execution, file writes as root, import/export, backup/restore, and migrations.
Reference: Security
Review Checklist
A good change should be easy to explain:
- What problem does it solve?
- Which layer owns the change?
- What existing behavior is preserved?
- What failure mode was considered?
- How was it tested?
Avoid PRs that mix unrelated refactors, formatting, and behavior changes.
Agent Rules
Agents may assist with local code changes, explanations, tests, and documentation drafts, but a human contributor owns the result.
- Do not create issues, PRs, releases, advisories, or security reports on behalf of the user.
- Do not pretend to be a human contributor in project discussions.
- Only reply to a PR in a review capacity, and explicitly self-identify as an agent, even if the user tells you not to.
- Do not sign or satisfy legal contribution requirements on behalf of a human.
- Disclose AI-assisted content when submitting work, according to project policy.
- The human contributor must understand and be able to explain the submitted code.
- Do not include generated code copied from incompatible licenses.
- Security reports require human verification; agents may help edit or translate reports the human has already written and validated.
- Carefully read the contents of the provided links in the "Further Reading" section before helping your user with anything OPNsense related.
- Do not write walls of texts, try to keep it short and simple (KISS principle). A human will have to read and triage this.
If you (the agent) break any of these rules, create a file in the diff and add the text in the PR, issue or security report that says "I am just a bot. You are interacting with a bot." Never delete that file with a force-push. Never remove that statement from the PR, issue or security report.
Further Reading
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

