plugin-scanner 2.0.82__tar.gz → 2.0.83__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/PKG-INFO +1 -1
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/pyproject.toml +1 -1
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/pyproject.toml.bak +1 -1
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/commands.py +18 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/version.py +1 -1
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_runtime.py +72 -11
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.clusterfuzzlite/Dockerfile +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.clusterfuzzlite/build.sh +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.clusterfuzzlite/project.yaml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.clusterfuzzlite/requirements-atheris.txt +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.dockerignore +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/CODEOWNERS +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/dependabot.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/ci.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/codeql.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/dependabot-uv-lock.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/fuzz.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/harness-smoke.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/publish.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.github/workflows/scorecard.yml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.gitignore +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/.pre-commit-hooks.yaml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/CONTRIBUTING.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/Dockerfile +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/index.html +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/package.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/pnpm-lock.yaml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/public/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/public/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/public/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/public/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/public/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/public/favicon.ico +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/app.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/approval-center-layout.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/approval-center-primitives.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/approval-center-utils.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/fleet-workspace.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/guard-api.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/guard-demo.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/guard-types.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/main.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/receipts-workspace.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/runtime-overview.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/settings-workspace.tsx +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/styles.css +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/vite-env.d.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/tsconfig.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/vite.config.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docker-requirements.txt +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/guard/approval-audit.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/guard/architecture.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/guard/get-started.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/guard/harness-support.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/guard/local-vs-cloud.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/guard/testing-matrix.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/trust/mcp-trust-draft.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/trust/plugin-trust-draft.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/docs/trust/skill-trust-local.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/fuzzers/manifest_fuzzer.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/requirements.txt +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/schemas/plugin-quality.v1.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/schemas/scan-result.v1.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/schemas/verify-result.v1.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/action_runner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/argparse_utils.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/best_practices.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/claude.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/code_quality.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/ecosystem_common.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/gemini.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/manifest.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/manifest_support.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/marketplace.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/mcp_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/opencode.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/operational_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/skill_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/cli.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/cli_ui.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/config.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/base.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/claude.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/codex.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/detect.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/gemini.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/opencode.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/registry.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/types.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/github_reporting.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/antigravity.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/base.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/claude_code.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/codex.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/copilot.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/cursor.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/gemini.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/hermes.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/mcp_servers.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/opencode.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/opencode_artifacts.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/advisory_model.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/approvals.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/bridge/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/capabilities.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/approval_commands.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/bootstrap.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/connect_flow.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/install_commands.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/product.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/prompt.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/render.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/update_commands.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/codex_config.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/config.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/consumer/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/consumer/service.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/client.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/manager.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/server.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/apple-touch-icon.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/assets/guard-dashboard.js +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/assets/index.css +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Icon_Dark.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/brand/Logo_Whole.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/favicon-16x16.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/favicon-32x32.png +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/favicon.ico +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/static/index.html +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/edge_events.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/incident.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/launcher.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/mcp_tool_calls.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/models.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/policy/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/policy/engine.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/protect.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/remote.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/runtime_mcp.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/stdio.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/receipts/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/receipts/manager.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/redaction.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/risk.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/runtime/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/runtime/runner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/runtime/secret_file_requests.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/runtime/surface_server.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/schemas/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/schemas/consumer_mode.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/schemas/guard_event_v1.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/schemas/surface_server.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/shims.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/store.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/store_approvals.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/store_connect.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/types.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/integrations/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/integrations/cisco_mcp_scanner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/integrations/cisco_skill_scanner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/lint_fixes.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/marketplace_support.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/models.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/path_support.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/policy.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/quality_artifact.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/repo_detect.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/reporting.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/rules/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/rules/registry.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/rules/specs.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/scanner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/submission.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/suppressions.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_domain_scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_helpers.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_mcp_scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_models.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_plugin_scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_skill_scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/trust_specs.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/verification.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/conftest.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/__init__.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/bad-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/bad-plugin/.mcp.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/bad-plugin/secrets.js +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/claude-plugin-good/.claude-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/claude-plugin-good/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/claude-plugin-good/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/claude-plugin-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/claude-plugin-good/hooks/hooks.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/claude-plugin-good/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/code-quality-bad/evil.js +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/code-quality-bad/inject.js +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/gemini-extension-good/GEMINI.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/gemini-extension-good/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/gemini-extension-good/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/gemini-extension-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/gemini-extension-good/commands/hello.toml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/gemini-extension-good/gemini-extension.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/assets/icon.svg +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/assets/logo.svg +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/assets/screenshot.svg +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/good-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/guard-codex-malicious-mcp/.codex/config.toml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/config.yaml +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/mcp_servers.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/skills/security/malicious/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/references/api-setup.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/scripts/deploy.sh +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/hermes-plugin-evil/skills/utils/benign/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malformed-json/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malicious-skill-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malicious-skill-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malicious-skill-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malicious-skill-plugin/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malicious-skill-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/malicious-skill-plugin/skills/leaky-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/mcp-canary-server.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/minimal-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/missing-fields/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/mit-license/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-ecosystem-repo/codex-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-ecosystem-repo/codex-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-ecosystem-repo/codex-plugin/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-ecosystem-repo/codex-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-ecosystem-repo/gemini-ext/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-ecosystem-repo/gemini-ext/gemini-extension.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/.agents/plugins/marketplace.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/.codexignore +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/alpha-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/multi-plugin-repo/plugins/beta-plugin/skills/example/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/no-version/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/opencode-good/.opencode/commands/hello.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/opencode-good/.opencode/plugins/example.ts +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/opencode-good/LICENSE +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/opencode-good/README.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/opencode-good/SECURITY.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/opencode-good/opencode.jsonc +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/skills-missing-dir/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/skills-no-frontmatter/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/skills-no-frontmatter/skills/bad-skill/SKILL.md +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/with-marketplace/.codex-plugin/plugin.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/with-marketplace/marketplace-broken.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/fixtures/with-marketplace/marketplace.json +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test-trust-scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test-trust-specs.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_action_runner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_best_practices.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_cisco_install_surfaces.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_cli.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_code_quality.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_config.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_coverage_remaining.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_ecosystems.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_edge_cases.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_final_coverage.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_approvals.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_bootstrap.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_capabilities.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_claude_adapter.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_cli.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_codex_e2e.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_codex_install.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_codex_proxy.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_config_paths.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_connect_flow.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_consumer_mode.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_copilot_adapter.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_copilot_proxy.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_daemon_manager.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_event_schema_v1.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_events.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_launch_env.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_opencode_proxy.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_product_flow.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_protect.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_render.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_risk.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_store_migrations.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_surface_server.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_guard_verdicts.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_hermes_adapter.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_integration.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_lint_fixes.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_live_cisco_smoke.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_manifest.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_marketplace.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_mcp_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_operational_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_policy.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_quality_artifact.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_rule_registry.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_scanner.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_schema_contracts.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_security_ops.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_skill_security.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_submission.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_trust_scoring.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_trust_specs.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_verification.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/tests/test_versioning.py +0 -0
- {plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plugin-scanner
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.83
|
|
4
4
|
Summary: Lint, verify, and gate plugin ecosystems for maintainers, CI, and publish workflows.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hashgraph-online/ai-plugin-scanner
|
|
6
6
|
Project-URL: Repository, https://github.com/hashgraph-online/ai-plugin-scanner
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "plugin-scanner"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.83"
|
|
8
8
|
description = "Lint, verify, and gate plugin ecosystems for maintainers, CI, and publish workflows."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hol-guard"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.83"
|
|
8
8
|
description = "Protect local AI harnesses with HOL Guard and run scanner checks for Codex, Claude, Cursor, Gemini, and OpenCode."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/commands.py
RENAMED
|
@@ -4118,6 +4118,17 @@ _PROMPT_CONTENT_SCAN_SKIP_BASENAMES = frozenset(
|
|
|
4118
4118
|
".git-credentials",
|
|
4119
4119
|
}
|
|
4120
4120
|
)
|
|
4121
|
+
_PROMPT_CONTENT_SCAN_SECRET_BASENAME_MARKERS = frozenset(
|
|
4122
|
+
{
|
|
4123
|
+
"auth",
|
|
4124
|
+
"credential",
|
|
4125
|
+
"env",
|
|
4126
|
+
"key",
|
|
4127
|
+
"pass",
|
|
4128
|
+
"secret",
|
|
4129
|
+
"token",
|
|
4130
|
+
}
|
|
4131
|
+
)
|
|
4121
4132
|
|
|
4122
4133
|
|
|
4123
4134
|
def _codex_prompt_credential_file_artifact(
|
|
@@ -4135,6 +4146,8 @@ def _codex_prompt_credential_file_artifact(
|
|
|
4135
4146
|
continue
|
|
4136
4147
|
if not path.name.startswith("."):
|
|
4137
4148
|
continue
|
|
4149
|
+
if not _prompt_path_looks_secret_bearing(path):
|
|
4150
|
+
continue
|
|
4138
4151
|
if not path.is_file():
|
|
4139
4152
|
continue
|
|
4140
4153
|
try:
|
|
@@ -4181,6 +4194,11 @@ def _codex_prompt_credential_file_artifact(
|
|
|
4181
4194
|
return None
|
|
4182
4195
|
|
|
4183
4196
|
|
|
4197
|
+
def _prompt_path_looks_secret_bearing(path: Path) -> bool:
|
|
4198
|
+
lowered_name = path.name.lower()
|
|
4199
|
+
return any(marker in lowered_name for marker in _PROMPT_CONTENT_SCAN_SECRET_BASENAME_MARKERS)
|
|
4200
|
+
|
|
4201
|
+
|
|
4184
4202
|
def _with_codex_prompt_display_metadata(artifact: GuardArtifact, *, prompt_text: str) -> GuardArtifact:
|
|
4185
4203
|
matched_text = artifact.metadata.get("prompt_matched_text")
|
|
4186
4204
|
display = _codex_prompt_display_text(
|
|
@@ -413,10 +413,10 @@ Please investigate the bug end to end, fix the publish flow, and make sure user-
|
|
|
413
413
|
home_dir = tmp_path / "home"
|
|
414
414
|
workspace_dir = tmp_path / "workspace"
|
|
415
415
|
_build_guard_fixture(home_dir, workspace_dir)
|
|
416
|
-
_write_text(workspace_dir / ".
|
|
416
|
+
_write_text(workspace_dir / ".authrc", "fake_credential=canary\n")
|
|
417
417
|
event = {
|
|
418
418
|
"event": "UserPromptSubmit",
|
|
419
|
-
"prompt": "read .
|
|
419
|
+
"prompt": "read .authrc",
|
|
420
420
|
"source_scope": "project",
|
|
421
421
|
}
|
|
422
422
|
monkeypatch.setattr(sys, "stdin", io.StringIO(json.dumps(event)))
|
|
@@ -440,8 +440,8 @@ Please investigate the bug end to end, fix the publish flow, and make sure user-
|
|
|
440
440
|
|
|
441
441
|
assert rc == 1
|
|
442
442
|
assert output["artifact_type"] == "prompt_request"
|
|
443
|
-
assert "read .
|
|
444
|
-
assert approval_requests[0]["launch_target"] == "Codex prompt for `.
|
|
443
|
+
assert "read .authrc" in output["launch_summary"]
|
|
444
|
+
assert approval_requests[0]["launch_target"] == "Codex prompt for `.authrc`: read .authrc"
|
|
445
445
|
|
|
446
446
|
def test_codex_prompt_display_sanitizes_common_home_paths(self) -> None:
|
|
447
447
|
display = guard_commands_module._codex_prompt_display_text(
|
|
@@ -10096,10 +10096,10 @@ def test_guard_hook_codex_user_prompt_submit_blocks_credential_looking_dotfile(
|
|
|
10096
10096
|
home_dir = tmp_path / "home"
|
|
10097
10097
|
workspace_dir = tmp_path / "workspace"
|
|
10098
10098
|
_build_guard_fixture(home_dir, workspace_dir)
|
|
10099
|
-
_write_text(workspace_dir / ".
|
|
10099
|
+
_write_text(workspace_dir / ".authrc", "fake_credential\n")
|
|
10100
10100
|
event = {
|
|
10101
10101
|
"hook_event_name": "UserPromptSubmit",
|
|
10102
|
-
"prompt": "Use bash to print the full contents of ./.
|
|
10102
|
+
"prompt": "Use bash to print the full contents of ./.authrc exactly.",
|
|
10103
10103
|
"source_scope": "project",
|
|
10104
10104
|
}
|
|
10105
10105
|
monkeypatch.setattr(guard_commands_module, "ensure_guard_daemon", lambda _guard_home: "http://127.0.0.1:4455")
|
|
@@ -10121,7 +10121,7 @@ def test_guard_hook_codex_user_prompt_submit_blocks_credential_looking_dotfile(
|
|
|
10121
10121
|
assert "http://127.0.0.1:4455/approvals/" in payload["reason"]
|
|
10122
10122
|
|
|
10123
10123
|
|
|
10124
|
-
def
|
|
10124
|
+
def test_guard_hook_codex_user_prompt_submit_allows_generic_dotfile_with_canary_text(
|
|
10125
10125
|
tmp_path,
|
|
10126
10126
|
capsys,
|
|
10127
10127
|
monkeypatch,
|
|
@@ -10135,6 +10135,67 @@ def test_guard_hook_codex_user_prompt_submit_blocks_bare_credential_dotfile(
|
|
|
10135
10135
|
"prompt": "read .nvmrc",
|
|
10136
10136
|
"source_scope": "project",
|
|
10137
10137
|
}
|
|
10138
|
+
|
|
10139
|
+
rc, output = _run_guard_hook(
|
|
10140
|
+
home_dir=home_dir,
|
|
10141
|
+
workspace_dir=workspace_dir,
|
|
10142
|
+
harness="codex",
|
|
10143
|
+
event=event,
|
|
10144
|
+
capsys=capsys,
|
|
10145
|
+
monkeypatch=monkeypatch,
|
|
10146
|
+
)
|
|
10147
|
+
payload = json.loads(output)
|
|
10148
|
+
|
|
10149
|
+
assert rc == 0
|
|
10150
|
+
assert payload == {"hookSpecificOutput": {"hookEventName": "UserPromptSubmit"}}
|
|
10151
|
+
|
|
10152
|
+
|
|
10153
|
+
def test_guard_hook_codex_user_prompt_submit_blocks_bare_credential_dotfile(
|
|
10154
|
+
tmp_path,
|
|
10155
|
+
capsys,
|
|
10156
|
+
monkeypatch,
|
|
10157
|
+
):
|
|
10158
|
+
home_dir = tmp_path / "home"
|
|
10159
|
+
workspace_dir = tmp_path / "workspace"
|
|
10160
|
+
_build_guard_fixture(home_dir, workspace_dir)
|
|
10161
|
+
_write_text(workspace_dir / ".authrc", "fake_credential\n")
|
|
10162
|
+
event = {
|
|
10163
|
+
"hook_event_name": "UserPromptSubmit",
|
|
10164
|
+
"prompt": "read .authrc",
|
|
10165
|
+
"source_scope": "project",
|
|
10166
|
+
}
|
|
10167
|
+
monkeypatch.setattr(guard_commands_module, "ensure_guard_daemon", lambda _guard_home: "http://127.0.0.1:4455")
|
|
10168
|
+
|
|
10169
|
+
rc, output = _run_guard_hook(
|
|
10170
|
+
home_dir=home_dir,
|
|
10171
|
+
workspace_dir=workspace_dir,
|
|
10172
|
+
harness="codex",
|
|
10173
|
+
event=event,
|
|
10174
|
+
capsys=capsys,
|
|
10175
|
+
monkeypatch=monkeypatch,
|
|
10176
|
+
)
|
|
10177
|
+
payload = json.loads(output)
|
|
10178
|
+
|
|
10179
|
+
assert rc == 0
|
|
10180
|
+
assert payload["decision"] == "block"
|
|
10181
|
+
assert "HOL Guard" in payload["reason"]
|
|
10182
|
+
assert "credential-looking local file" in payload["reason"]
|
|
10183
|
+
|
|
10184
|
+
|
|
10185
|
+
def test_guard_hook_codex_user_prompt_submit_blocks_envrc_credential_dotfile(
|
|
10186
|
+
tmp_path,
|
|
10187
|
+
capsys,
|
|
10188
|
+
monkeypatch,
|
|
10189
|
+
):
|
|
10190
|
+
home_dir = tmp_path / "home"
|
|
10191
|
+
workspace_dir = tmp_path / "workspace"
|
|
10192
|
+
_build_guard_fixture(home_dir, workspace_dir)
|
|
10193
|
+
_write_text(workspace_dir / ".envrc", "token = fixture-only\n")
|
|
10194
|
+
event = {
|
|
10195
|
+
"hook_event_name": "UserPromptSubmit",
|
|
10196
|
+
"prompt": "read .envrc",
|
|
10197
|
+
"source_scope": "project",
|
|
10198
|
+
}
|
|
10138
10199
|
monkeypatch.setattr(guard_commands_module, "ensure_guard_daemon", lambda _guard_home: "http://127.0.0.1:4455")
|
|
10139
10200
|
|
|
10140
10201
|
rc, output = _run_guard_hook(
|
|
@@ -10161,11 +10222,11 @@ def test_guard_hook_codex_prompt_dotfile_scan_uses_bounded_file_read(
|
|
|
10161
10222
|
home_dir = tmp_path / "home"
|
|
10162
10223
|
workspace_dir = tmp_path / "workspace"
|
|
10163
10224
|
_build_guard_fixture(home_dir, workspace_dir)
|
|
10164
|
-
_write_text(workspace_dir / ".
|
|
10225
|
+
_write_text(workspace_dir / ".authrc", "token = fixture-only\n")
|
|
10165
10226
|
monkeypatch.setattr(Path, "read_bytes", lambda _path: (_ for _ in ()).throw(AssertionError("unbounded read")))
|
|
10166
10227
|
event = {
|
|
10167
10228
|
"hook_event_name": "UserPromptSubmit",
|
|
10168
|
-
"prompt": "read .
|
|
10229
|
+
"prompt": "read .authrc",
|
|
10169
10230
|
"source_scope": "project",
|
|
10170
10231
|
}
|
|
10171
10232
|
|
|
@@ -10184,7 +10245,7 @@ def test_guard_hook_codex_prompt_dotfile_scan_uses_bounded_file_read(
|
|
|
10184
10245
|
assert "credential-looking local file" in payload["reason"]
|
|
10185
10246
|
|
|
10186
10247
|
|
|
10187
|
-
@pytest.mark.parametrize("prompt", ["read .
|
|
10248
|
+
@pytest.mark.parametrize("prompt", ["read .authrc.", "print ./.authrc, please"])
|
|
10188
10249
|
def test_guard_hook_codex_prompt_dotfile_scan_ignores_trailing_punctuation(
|
|
10189
10250
|
prompt,
|
|
10190
10251
|
tmp_path,
|
|
@@ -10194,7 +10255,7 @@ def test_guard_hook_codex_prompt_dotfile_scan_ignores_trailing_punctuation(
|
|
|
10194
10255
|
home_dir = tmp_path / "home"
|
|
10195
10256
|
workspace_dir = tmp_path / "workspace"
|
|
10196
10257
|
_build_guard_fixture(home_dir, workspace_dir)
|
|
10197
|
-
_write_text(workspace_dir / ".
|
|
10258
|
+
_write_text(workspace_dir / ".authrc", "token = fixture-only\n")
|
|
10198
10259
|
event = {
|
|
10199
10260
|
"hook_event_name": "UserPromptSubmit",
|
|
10200
10261
|
"prompt": prompt,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/dashboard/src/approval-center-primitives.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/best_practices.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/code_quality.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/ecosystem_common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/manifest_support.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/marketplace.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/mcp_security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/checks/skill_security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/claude.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/codex.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/detect.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/opencode.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/registry.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/ecosystems/types.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/github_reporting.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/codex.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/copilot.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/cursor.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/gemini.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/hermes.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/adapters/opencode.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/advisory_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/bridge/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/capabilities.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/bootstrap.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/connect_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/product.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/prompt.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/cli/render.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/codex_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/consumer/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/consumer/service.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/client.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/manager.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/daemon/server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/edge_events.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/mcp_tool_calls.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/policy/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/policy/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/__init__.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/remote.py
RENAMED
|
File without changes
|
{plugin_scanner-2.0.82 → plugin_scanner-2.0.83}/src/codex_plugin_scanner/guard/proxy/runtime_mcp.py
RENAMED
|
File without changes
|