WYRE-AI/msp-claude-plugins/msp-claude-plugins/meraki/meraki/skills/security-appliance/SKILL.md
Meraki Security Appliance
Cisco Meraki MX security appliance: the L3 outbound firewall rule model and the full-ruleset replacement semantics of meraki_appliance_firewall_l3_update, plus Auto VPN site-to-site peer status via meraki_appliance_vpn_status_get.
- Source repository stars
- 42
- Declared platforms
- 0
- Static risk flags
- 0
- Last source update
- 2026-08-28
- Source checked
- 2026-08-28
Decision brief
What it does: where it fits
Cisco Meraki MX security appliance: the L3 outbound firewall rule model and the full-ruleset replacement semantics of meraki_appliance_firewall_l3_update, plus Auto VPN site-to-site peer status via meraki_appliance_vpn_status_get.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/meraki/meraki/skills/security-appliance"Inspect the Agent Skill "Meraki Security Appliance" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/meraki/meraki/skills/security-appliance/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Anti-triggers
A firewall that is not a Meraki MX — these rules are MX L3
A firewall that is not a Meraki MX — these rules are MX L3Inbound port forwarding, content filtering, or L7 rules — theClient VPN or a remote-access VPN user — - 02
L3 Outbound Firewall
MX L3 outbound rules are an ordered list evaluated top-to-bottom; the first match wins. Each rule has:
networkid -- The MX network (required)rules -- The complete ordered ruleset (required)Any/any allow above the default -- policy: allow, protocol: any, srcCidr: any, destCidr: any, destPort: any. This is effectively "allow everything" and usually redundant or dangerous. - 03
Rule Model
MX L3 outbound rules are an ordered list evaluated top-to-bottom; the first match wins. Each rule has:
MX L3 outbound rules are an ordered list evaluated top-to-bottom; the first match wins. Each rule has:There is always an implicit default allow rule at the bottom of the outbound list. Rules you configure sit above it. - 04
Get Current Rules
Parameters: - networkid -- The MX network (required)
networkid -- The MX network (required)Parameters: - networkid -- The MX network (required) - 05
Update Rules (High-Impact)
Parameters: - networkid -- The MX network (required) - rules -- The complete ordered ruleset (required)
networkid -- The MX network (required)rules -- The complete ordered ruleset (required)Parameters: - networkid -- The MX network (required) - rules -- The complete ordered ruleset (required)
Permission review
Static risk signals and limitations
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 42 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- WYRE-AI/msp-claude-plugins
- Skill path
- msp-claude-plugins/meraki/meraki/skills/security-appliance/SKILL.md
- Commit
- 5005f73ba2f52cd299f58aa6bb79f4e70ae87103
- License
- Apache-2.0
- Collected
- 2026-08-28
- Default branch
- main
View the original SKILL.md
Meraki Security Appliance (MX)
Overview
The Meraki MX is a cloud-managed security appliance combining routing, stateful firewall, SD-WAN, and Auto VPN. This skill covers the two curated MX capabilities: reviewing and updating the Layer 3 outbound firewall ruleset, and checking site-to-site VPN status. Firewall changes are high-impact -- the update tool replaces the entire ruleset, so read before you write.
Anti-triggers
- A firewall that is not a Meraki MX — these rules are MX L3
outbound only. A Fortinet, SonicWall, or Palo Alto ruleset is not
reachable from this plugin at all;
auvik-devicescan tell you what the firewall is, not change it. - Inbound port forwarding, content filtering, or L7 rules — the
curated tools cover the L3 outbound list alone; everything else on
the MX goes through
meraki_raw_request, documented inmeraki-api-patterns. - Client VPN or a remote-access VPN user —
meraki_appliance_vpn_status_getreports site-to-site Auto VPN peers only. - A tunnel that is down because the appliance is — check the MX and
its uplinks before diagnosing VPN config; use
meraki-troubleshooting.
L3 Outbound Firewall
Rule Model
MX L3 outbound rules are an ordered list evaluated top-to-bottom; the first match wins. Each rule has:
| Field | Values | Notes |
|---|---|---|
policy | allow / deny | Action on match |
protocol | tcp / udp / icmp / icmp6 / any | Layer 4 protocol |
srcCidr | CIDR / any / VLAN object | Source network |
srcPort | port / range / any | Source port(s) |
destCidr | CIDR / any / FQDN | Destination network |
destPort | port / range / any | Destination port(s) |
comment | free text | Human label -- always populate |
syslogEnabled | bool | Log matches to syslog |
There is always an implicit default allow rule at the bottom of the outbound list. Rules you configure sit above it.
Get Current Rules
meraki_appliance_firewall_l3_get
Parameters:
network_id-- The MX network (required)
Example response:
{
"rules": [
{
"comment": "Block outbound SMB to internet",
"policy": "deny",
"protocol": "tcp",
"srcCidr": "any",
"srcPort": "any",
"destCidr": "any",
"destPort": "445",
"syslogEnabled": true
},
{
"comment": "Default rule",
"policy": "allow",
"protocol": "any",
"srcCidr": "any",
"srcPort": "any",
"destCidr": "any",
"destPort": "any"
}
]
}
Update Rules (High-Impact)
meraki_appliance_firewall_l3_update
Parameters:
network_id-- The MX network (required)rules-- The complete ordered ruleset (required)
CRITICAL: The update replaces the entire ruleset. It is not additive. Any existing rule you omit is deleted. Always:
meraki_appliance_firewall_l3_getto fetch the current rules- Modify the list in place (add/remove/reorder)
- Send the full modified list back
- Do not include the implicit default rule unless the Dashboard shows it as editable
A mistake here can cut off a site's internet or open it up. Present a clear before/after diff and require explicit user confirmation before writing.
Reviewing for Overly-Permissive Rules
Flag rules that weaken the security posture:
- Any/any allow above the default --
policy: allow,protocol: any,srcCidr: any,destCidr: any,destPort: any. This is effectively "allow everything" and usually redundant or dangerous. - Broad inbound-equivalent exposure -- allow rules to sensitive destination ports (
3389RDP,22SSH,445SMB,23Telnet) fromanysource. - Missing comments -- unlabeled rules are unauditable; flag them for documentation.
- Disabled logging on deny rules --
syslogEnabled: falseon security-relevant denies reduces visibility. - Shadowed rules -- a broad allow above a more specific deny means the deny never matches.
Site-to-Site VPN Status
Auto VPN Model
Meraki Auto VPN builds IPsec tunnels between MX appliances in the same org automatically. An MX participates as a hub or spoke (or is disabled). The status endpoint reports peer connectivity and export/import of subnets.
Get VPN Status
meraki_appliance_vpn_status_get
Parameters:
network_id-- The MX network (required)
Example response:
{
"networkId": "L_123456789012345678",
"networkName": "HQ",
"deviceStatus": "online",
"vpnMode": "hub",
"exportedSubnets": [
{ "subnet": "192.168.1.0/24", "name": "HQ LAN" }
],
"merakiVpnPeers": [
{ "networkId": "L_222", "networkName": "Branch-A", "reachability": "reachable" },
{ "networkId": "L_333", "networkName": "Branch-B", "reachability": "unreachable" }
],
"thirdPartyVpnPeers": []
}
Interpreting VPN Status
reachability: unreachableon a peer means the tunnel is down -- the two sites cannot route the exported subnets between them.- A
spokethat cannot reach itshubis isolated from the VPN mesh. - Check
deviceStatusfirst -- if the local MX isoffline, every tunnel will read down and the real problem is the appliance/uplink, not VPN config.
Common Workflows
Firewall Rule Audit
- Call
meraki_appliance_firewall_l3_getfor the network - Walk the ordered list; flag any/any allows, sensitive-port exposure, unlabeled and shadowed rules
- Summarize findings with the rule index, the issue, and the risk
- Recommend specific changes -- do not write unless asked and confirmed
Safe Firewall Change
meraki_appliance_firewall_l3_getand show the current rules- Propose the exact new ordered list with a before/after diff
- Get explicit user confirmation
meraki_appliance_firewall_l3_updatewith the full modified ruleset- Re-
getto verify the change landed as intended
VPN Health Check
- Call
meraki_appliance_vpn_status_getper MX network (or sweep across networks) - Confirm
deviceStatusisonlinebefore trusting peer reachability - Flag any peer with
reachability: unreachable - For hubs, confirm all expected spokes are reachable; for spokes, confirm the hub is reachable
Error Handling
400 on Firewall Update
Cause: Malformed rule (bad CIDR, invalid port range, unknown protocol) or missing required field
Solution: Validate each rule against the schema; re-get to compare against a known-good shape
Empty / 404 Firewall or VPN Response
Cause: The network has no MX appliance, or the network ID is wrong
Solution: Confirm the network's product types include appliance; verify the network ID
VPN Shows All Peers Down
Cause: The local MX is offline or its uplink failed -- not necessarily a VPN misconfiguration Solution: Check device and uplink status (see the troubleshooting skill) before diagnosing VPN config
Best Practices
- Always
getthe current firewall ruleset before anyupdate-- the update replaces everything - Present a before/after diff and require explicit confirmation for firewall changes
- Keep every rule commented so the ruleset stays auditable
- Flag any/any allows and sensitive-port exposure during reviews
- Enable syslog on security-relevant deny rules for visibility
- Verify MX
deviceStatusis online before interpreting VPN peer reachability - Treat firewall and VPN changes as change-controlled, high-impact operations
Related Skills
- api-patterns - Auth, read-only model, rate limiting
- devices - MX device status and uplinks
- troubleshooting - Uplink and connectivity live tools
Frequently asked questions
What to verify before installation and use
What does the Meraki Security Appliance source document cover?
Cisco Meraki MX security appliance: the L3 outbound firewall rule model and the full-ruleset replacement semantics of meraki_appliance_firewall_l3_update, plus Auto VPN site-to-site peer status via meraki_appliance_vpn_status_get.
How do I install Meraki Security Appliance?
The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/meraki/meraki/skills/security-appliance". Inspect the command and pinned source before running it.