{"id":48805576,"url":"https://github.com/zack-dev-cm/artifact-redactor","last_synced_at":"2026-04-14T05:01:32.898Z","repository":{"id":351081922,"uuid":"1209493487","full_name":"zack-dev-cm/artifact-redactor","owner":"zack-dev-cm","description":"Redact private paths, secret-like strings, private URLs, and common PII from text artifacts before sharing them.","archived":false,"fork":false,"pushed_at":"2026-04-13T14:03:35.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-13T15:31:04.142Z","etag":null,"topics":["artifacts","openclaw","privacy","redaction","sanitization"],"latest_commit_sha":null,"homepage":"https://clawhub.ai/zack-dev-cm/artifact-redactor","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zack-dev-cm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-13T13:37:00.000Z","updated_at":"2026-04-13T14:03:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zack-dev-cm/artifact-redactor","commit_stats":null,"previous_names":["zack-dev-cm/artifact-redactor"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/zack-dev-cm/artifact-redactor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zack-dev-cm%2Fartifact-redactor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zack-dev-cm%2Fartifact-redactor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zack-dev-cm%2Fartifact-redactor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zack-dev-cm%2Fartifact-redactor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zack-dev-cm","download_url":"https://codeload.github.com/zack-dev-cm/artifact-redactor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zack-dev-cm%2Fartifact-redactor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31782740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artifacts","openclaw","privacy","redaction","sanitization"],"created_at":"2026-04-14T05:01:28.128Z","updated_at":"2026-04-14T05:01:32.891Z","avatar_url":"https://github.com/zack-dev-cm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Artifact Redactor\n\n**Redact private paths, secret-like strings, private URLs, and common PII from Markdown, JSON, logs, and other text artifacts before you share them.**\n\nArtifact Redactor is a small public OpenClaw skill and local-first Python toolkit for making shareable\nartifact bundles safer. It scans text files for obvious leak patterns, writes a redacted copy of the\nartifacts into a clean output directory, checks the processed text output, surfaces skipped files as\nmanual-review items, and renders a concise markdown report.\n\nRequires Python 3.9+.\n\nBinary files are not rewritten. They are flagged for manual review so the tool stays honest about what\nit can and cannot sanitize automatically.\n\n## Proof\n\n```md\n# Artifact Redaction Report\n\n- Recommendation: **Manual review before sharing**\n- Original findings: **6**\n- Output findings: **0**\n- Processed text files: **2**\n- Manual-review files: **1**\n- Skipped files: **1**\n\n## Output Check\n- No obvious sensitive text patterns remain in processed text files.\n- 1 skipped file still requires manual review before sharing the full bundle.\n```\n\n## Quick Start\n\n```bash\nmkdir -p /tmp/artifact-redactor-demo\n\ncat \u003e /tmp/artifact-redactor-demo/notes.md \u003c\u003c'EOF'\nContact person@example.com or +1 555 123 4567.\nPublic docs https://example.com/docs?page=2#proof can stay without the query string.\nLocal trace /tmp/private-trace.log should not be shared.\nEOF\n\npython3 skill/artifact-redactor/scripts/scan_sensitive_text.py \\\n  --root /tmp/artifact-redactor-demo \\\n  --out /tmp/artifact-redactor-scan.json\n\npython3 skill/artifact-redactor/scripts/redact_artifacts.py \\\n  --root /tmp/artifact-redactor-demo \\\n  --out-dir /tmp/artifact-redactor-safe \\\n  --out /tmp/artifact-redactor-redaction.json\n\npython3 skill/artifact-redactor/scripts/check_redaction_output.py \\\n  --root /tmp/artifact-redactor-safe \\\n  --redaction /tmp/artifact-redactor-redaction.json \\\n  --out /tmp/artifact-redactor-check.json\n\npython3 skill/artifact-redactor/scripts/render_redaction_report.py \\\n  --scan /tmp/artifact-redactor-scan.json \\\n  --redaction /tmp/artifact-redactor-redaction.json \\\n  --check /tmp/artifact-redactor-check.json \\\n  --out /tmp/artifact-redactor-report.md\n```\n\n## What It Covers\n\n- scans text artifacts for private paths, private URLs, secret-like strings, email addresses, and phone numbers\n- writes a redacted copy of supported files into a separate output directory\n- marks skipped or unsupported files as manual-review-required instead of treating them as automatically cleared\n- strips query strings and fragments from public URLs while keeping the public path when safe\n- skips binary or unsupported files and calls them out for manual review\n- renders a shareable report you can attach to a bug, release note, vendor handoff, or public issue\n\n## Included\n\n- `skill/artifact-redactor/SKILL.md`\n- `skill/artifact-redactor/agents/openai.yaml`\n- `skill/artifact-redactor/scripts/redaction_common.py`\n- `skill/artifact-redactor/scripts/scan_sensitive_text.py`\n- `skill/artifact-redactor/scripts/redact_artifacts.py`\n- `skill/artifact-redactor/scripts/check_redaction_output.py`\n- `skill/artifact-redactor/scripts/render_redaction_report.py`\n\n## Use Cases\n\n- sanitize browser QA bundles before sharing them outside the team\n- clean logs, manifests, and markdown reports before filing a public GitHub issue\n- strip secrets and local paths from AI experiment outputs before posting benchmarks\n- prepare safer evidence packs for vendors, contractors, or release reviews\n\n## Limits\n\n- binary files, screenshots, and PDFs are not auto-redacted in `v1.0.3`\n- the scanner uses conservative heuristics; some manual review is still required\n- placeholder redaction is designed for sharing safety, not forensic reversibility\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzack-dev-cm%2Fartifact-redactor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzack-dev-cm%2Fartifact-redactor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzack-dev-cm%2Fartifact-redactor/lists"}