npx skills add smithery/githubnext --skill awf-debug-tools
github/gh-aw-firewall · Archived
awf-debug-tools
Practical Python scripts for debugging awf - parse logs, diagnose issues, inspect containers, test domains
Installation
npx skills add github/gh-aw-firewall --skill awf-debug-tools
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Use the AWF (Agentic Workflow Firewall) to run commands with network isolation and domain white…
30 installsDebug the AWF firewall by inspecting Docker containers (awf-squid, awf-agent), analyzing Squid …
11 installsRegenerate and post-process all agentic workflows. Use when gh-aw is updated, workflow .md file…
9 installsDebug GitHub Actions workflows by downloading logs, analyzing summaries, and understanding how …
8 installsSimilar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsDebug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe …
568.9K installsPre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure…
567.7K installsConfigure Azure API Management as an AI Gateway for AI models, MCP tools, and agents. WHEN: sem…
566.3K installsAzure VM/VMSS router. WHEN: create / provision / deploy / spin-up VM, recommend VM size, compar…
510K installsPostgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill …
391.6K installsAlso in this package
Other skills from github/gh-aw-firewall.
npx skills add github/gh-aw-firewall
More details
Agent compatibility
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Also listed on
Alternate registries and mirrors of this skill.
Repository health
main
Skill metadata
Parsed from SKILL.md frontmatter.
Bash(python:*), Bash(docker:*), Bash(sudo:*), ReadPackage contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md10,059 B -
docs
SUMMARY.md129 B
History
- First seen on skills.sh
- First recorded snapshot · 10 installs
SKILL.md
AWF Debug Tools
A collection of practical Python scripts that help agents efficiently debug and operate the awf firewall. These scripts reduce verbose Docker/log output by 80%+ and provide actionable insights instead of raw data dumps.
Why These Scripts?
Problem: Docker commands and log files are verbose and hard for agents to parse. Diagnosing issues requires 10+ manual commands and produces noisy output that wastes tokens.
Solution: One script replaces 5-10 manual commands with clean, filtered output optimized for agent consumption. All scripts support JSON format for easy parsing.
Available Scripts
All scripts are located in .claude/skills/awf-debug-tools/scripts/:
- parse-squid-logs.py - Parse Squid logs and extract blocked domains with counts
- diagnose-awf.py - Run automated diagnostic checks on container health and configuration
- inspect-containers.py - Show concise container status without verbose docker output
- test-domain.py - Test if specific domain is reachable through the firewall
Quick Start
Parse Logs to Find Blocked Domains
# Auto-discover logs and show all domains
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py
# Show only blocked domains
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --blocked-only
# Filter by domain
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --domain github.com
# Show top 10, JSON output
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --top 10 --format json
Run Automated Diagnostics
# Quick health check
python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py
# Detailed output
python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py --verbose
# JSON output for agent parsing
python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py --format json
Inspect Container Status
# Inspect all containers
python .claude/skills/awf-debug-tools/scripts/inspect-containers.py
# Specific container only
python .claude/skills/awf-debug-tools/scripts/inspect-containers.py --container awf-squid
# Show only logs
python .claude/skills/awf-debug-tools/scripts/inspect-containers.py --logs-only
# JSON output
python .claude/skills/awf-debug-tools/scripts/inspect-containers.py --format json
Test Domain Reachability
# Test if domain is allowed
python .claude/skills/awf-debug-tools/scripts/test-domain.py github.com
# Test blocked domain with fix suggestion
python .claude/skills/awf-debug-tools/scripts/test-domain.py npmjs.org --suggest-fix
# Check allowlist only (no log lookup)
python .claude/skills/awf-debug-tools/scripts/test-domain.py api.github.com --check-allowlist
# JSON output
python .claude/skills/awf-debug-tools/scripts/test-domain.py github.com --format json
Common Workflows
Workflow 1: Debugging Blocked Requests
When a command fails due to blocked domain:
# 1. Run diagnostics to check overall health
python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py
# 2. Parse logs to find which domains were blocked
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --blocked-only
# 3. Test specific domain and get fix suggestion
python .claude/skills/awf-debug-tools/scripts/test-domain.py npmjs.org --suggest-fix
# 4. Apply the suggested fix
sudo awf --allow-domains github.com,npmjs.org 'your-command'
Workflow 2: Container Health Check
When containers aren't starting or behaving unexpectedly:
# 1. Check container status and recent logs
python .claude/skills/awf-debug-tools/scripts/inspect-containers.py
# 2. Run full diagnostics
python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py --verbose
# 3. If issues found, check Squid logs for errors
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py
Workflow 3: Agent Automated Debugging
For agents to diagnose issues without human intervention:
# Run all checks with JSON output
python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py --format json | jq .
# Parse blocked domains
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --blocked-only --format json | jq .
# Test each blocked domain
python .claude/skills/awf-debug-tools/scripts/test-domain.py npmjs.org --format json | jq .
Output Formats
All scripts support two output formats:
- table/text (default): Human-readable format with clear sections and alignment
- json: Machine-readable format optimized for agent parsing
Use --format json to get structured output that's easy to parse programmatically.
Exit Codes
All scripts use consistent exit codes:
- 0: Success (no issues found, domain allowed, etc.)
- 1: Issues found (blocked domains, failed checks, domain blocked)
- 2: Error (missing logs, invalid arguments, etc.)
No Dependencies
All scripts use Python 3.8+ stdlib only. No pip install required. They work out of the box on any system with Python 3.8+.
Script Reference
parse-squid-logs.py
Purpose: Extract blocked domains from Squid logs with counts and statistics.
Key Options:
--blocked-only- Show only blocked domains--domain DOMAIN- Filter by specific domain--top N- Show top N domains by request count--format {table,json}- Output format
Auto-discovers logs from running containers, preserved logs, or work directories.
diagnose-awf.py
Purpose: Run automated diagnostic checks and report issues with fixes.
Checks:
- Container status (running/stopped/missing)
- Container health (Squid healthcheck)
- Network connectivity (Squid reachable from agent)
- DNS configuration
- Squid config validation
- Common issues (port conflicts, orphaned containers)
Key Options:
--verbose- Show detailed check output--format {text,json}- Output format
inspect-containers.py
Purpose: Show concise container status without verbose docker output.
Shows:
- Container status and exit codes
- IP addresses and network info
- Health check status
- Top 5 processes
- Recent logs (last 5 lines)
Key Options:
--container NAME- Inspect specific container only--logs-only- Show only recent logs--tail N- Number of log lines (default: 5)--format {text,json}- Output format
test-domain.py
Purpose: Test if domain is reachable through the firewall.
Checks:
- If domain is in Squid allowlist
- If domain appears in recent Squid logs
- Whether requests were allowed or blocked
Key Options:
--check-allowlist- Only check allowlist, don't check logs--suggest-fix- Show suggested --allow-domains flag--format {text,json}- Output format
Integration with Existing Skills
- For manual debugging commands, see the
debug-firewallskill - For MCP Gateway integration, see the
awf-mcp-gatewayskill - For general troubleshooting, see
docs/troubleshooting.md
Performance
All scripts are designed for fast execution:
parse-squid-logs.py: <2 seconds for typical log filesdiagnose-awf.py: <3 seconds for all checksinspect-containers.py: <2 seconds for both containerstest-domain.py: <1 second for domain check
Examples
Example 1: Find Blocked Domains
$ python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --blocked-only
Blocked Domains (sorted by count):
Domain Blocked Allowed Total
=================================================
registry.npmjs.org 45 0 45
example.com 12 0 12
Total requests: 1234
Blocked: 57 (4.6%)
Allowed: 1177 (95.4%)
Example 2: Diagnose Issues
$ python .claude/skills/awf-debug-tools/scripts/diagnose-awf.py
AWF Diagnostic Report
========================================
[✓] Containers: awf-squid (running), awf-agent (exited:0)
[✓] Health: Squid healthy
[✓] Network: awf-net exists ([{Subnet:172.30.0.0/24 Gateway:172.30.0.1}])
[✓] Connectivity: Squid reachable on 172.30.0.10:3128
[✓] DNS: DNS servers: 127.0.0.11, 8.8.8.8, 8.8.4.4
[✓] Config: 3 domains in allowlist (github.com, .github.com, api.github.com)
Summary: All checks passed ✓
Example 3: Test Domain
$ python .claude/skills/awf-debug-tools/scripts/test-domain.py npmjs.org --suggest-fix
Testing: npmjs.org
[✗] Allowlist check: Not in allowlist
[✗] Reachability: Blocked (403 TCP_DENIED:HIER_NONE)
[✗] Status: BLOCKED
Suggested fix:
awf --allow-domains github.com,npmjs.org 'your-command'
Tips for Agents
- Use JSON output for easy parsing:
--format json | jq . - Chain commands to get complete picture: diagnose → parse logs → test domain
- Check exit codes to determine if action needed (0 = ok, 1 = issues)
- Use --suggest-fix to get ready-to-use awf commands
- Scripts auto-discover logs - no need to specify paths in most cases
Troubleshooting
Script not found:
# Use absolute path
python /home/mossaka/developer/gh-aw-repos/gh-aw-firewall/.claude/skills/awf-debug-tools/scripts/parse-squid-logs.py
Permission denied on logs:
# Squid logs require sudo to read
sudo python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py --log-file /tmp/squid-logs-*/access.log
No logs found:
# Run awf first to generate logs
sudo awf --allow-domains github.com 'curl https://api.github.com'
# Then parse
python .claude/skills/awf-debug-tools/scripts/parse-squid-logs.py
Future Enhancements
Planned scripts for future versions:
analyze-traffic.py- Analyze traffic patterns over timegenerate-allowlist.py- Auto-generate allowlist from logscleanup-awf.py- Clean up orphaned resourcesbenchmark-awf.py- Performance testing utilities