2 checks that ran failed — supply chain and permission scope — so this release can’t be trusted as-is.
- Publisher
- io.github.anthony-chaudhary
- Repository
- github.com/anthony-chaudhary/dos-kernel
- Install
- pypi:dos-kernel, pypi:dos-kernel, pypi:dos-kernel, pypi:dos-kernel, pypi:dos-kernel, pypi:dos-kernel
- Versions
- 6
- Inspected
- 4 of 6 checks · 65%
- Scored
- 2026-07-21 · rubric 1.0.0
What we checked
Six static checks, weighted by risk. Every result reflects only what could be observed in the published package and repository — never intent.
Injection surface
unscannable25% of gradeTool descriptions/manifest scanned for instruction-injection patterns (imperatives at the model, hidden text, 'ignore previous', data-exfil URLs).
No tool descriptions, server instructions, prompts, or resources were fetched; nothing to scan for injection.
Supply chain
fail25% of gradePackage provenance: namespace verification, repo linkage, maintainer count, account age, postinstall scripts, typosquat distance.
Python build script executes at build time: subprocess in build script, network call in build script
Credential hygiene
warn15% of gradeHow the server takes secrets (env vs plaintext config vs hardcoded); secrets appearing in tool schemas.
src/dos/reasons.py: assigns a literal to token (LANE…ED (len 12)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (LANE…ES (len 33)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (LANE…OP (len 37)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (LANE…ED (len 29)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (LANE…MP (len 40)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (LANE…MP (len 31)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (LANE…ON (len 33)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (SCHE…LE (len 17)) — non-provider secret literal; prefer environment intake. src/dos/reasons.py: assigns a literal to token (UNKN…NE (len 12)) — non-provider secret literal; prefer environment intake. tests/test_decisions.py: assigns a literal to token (LANE…ES (len 33)) — non-provider secret literal; prefer environment intake. tests/test_decisions.py: assigns a literal to token (LANE…ED (len 29)) — non-provider secret literal; prefer environment intake. tests/test_decisions.py: assigns a literal to token (MIS_…NG (len 18)) — non-provider secret literal; prefer environment intake. tests/test_refusal_and_tokens.py: assigns a literal to token (LANE…ET (len 22)) — non-provider secret literal; prefer environment intake. tests/test_refusal_and_tokens.py: assigns a literal to token (LANE…OW (len 18)) — non-provider secret literal; prefer environment intake. tests/test_refusal_and_tokens.py: assigns a literal to token (LANE…ED (len 12)) — non-provider secret literal; prefer environment intake. Reads secrets from the environment (e.g. src/dos/archive_lock.py) — the recommended intake shape.
Permission scope
fail15% of gradeDeclared tools vs. breadth (filesystem, network, exec); flags shell-exec and unbounded filesystem access.
HIGH: tests/test_init_hooks_crossvendor.py: references a sensitive credential path (/mcp.json) — the tool-poisoning exfiltration target. HIGH: shell/exec capability AND network egress together — download-and-execute risk (src/dos/cli.py: subprocess.* call; src/dos/drivers/citation_resolve.py: outbound HTTP/socket call). HIGH: shell/exec capability AND destructive filesystem writes together (src/dos/cli.py: subprocess.* call; src/dos/_demo_story.py: path traversal ('../') combined with file access). discloses shell/exec capability: src/dos/cli.py: subprocess.* call discloses shell/exec capability: src/dos/cli.py: os.system/os.popen/os.exec* call discloses shell/exec capability: src/dos/commit_audit.py: subprocess.* call discloses shell/exec capability: src/dos/decisions_tui.py: subprocess.* call discloses shell/exec capability: src/dos/drivers/ci_status.py: subprocess.* call discloses shell/exec capability: src/dos/drivers/llm_judge.py: subprocess.* call with shell=True (command-injection prone) discloses shell/exec capability: src/dos/drivers/memory_recall.py: subprocess.* call discloses shell/exec capability: src/dos/drivers/os_acceptance.py: subprocess.* call discloses shell/exec capability: src/dos/drivers/similarity_judge.py: subprocess.* call with shell=True (command-injection prone) discloses shell/exec capability: src/dos/env_print.py: subprocess.* call discloses shell/exec capability: src/dos/git_delta.py: subprocess.* call discloses shell/exec capability: src/dos/health.py: subprocess.* call discloses shell/exec capability: src/dos/hook_binary.py: subprocess.* call discloses shell/exec capability: src/dos/oracle.py: subprocess.* call discloses shell/exec capability: src/dos/phase_shipped.py: subprocess.* call discloses shell/exec capability: src/dos/preflight.py: subprocess.* call discloses shell/exec capability: src/dos/resume_evidence.py: subprocess.* call discloses shell/exec capability: src/dos/timeline.py: subprocess.* call discloses shell/exec capability: src/dos/verdict_cli.py: subprocess.* call discloses shell/exec capability: tests/test_agent_surface.py: subprocess.* call discloses shell/exec capability: tests/test_answer_shape.py: subprocess.* call discloses shell/exec capability: tests/test_breaker.py: subprocess.* call discloses shell/exec capability: tests/test_build_wheels_binary_format.py: subprocess.* call discloses shell/exec capability: tests/test_canonical_example_lockstep.py: subprocess.* call discloses shell/exec capability: tests/test_central_index.py: subprocess.* call discloses shell/exec capability: tests/test_cli_ergonomics.py: subprocess.* call discloses shell/exec capability: tests/test_cli_loop.py: subprocess.* call discloses shell/exec capability: tests/test_cli_pickable_enumerate.py: subprocess.* call discloses shell/exec capability: tests/test_cmd_status.py: subprocess.* call discloses shell/exec capability: tests/test_commit_audit.py: subprocess.* call discloses shell/exec capability: tests/test_config_lint.py: subprocess.* call discloses shell/exec capability: tests/test_coverage.py: subprocess.* call discloses shell/exec capability: tests/test_dispatch_top.py: subprocess.* call discloses shell/exec capability: tests/test_doctor_json.py: subprocess.* call discloses shell/exec capability: tests/test_drivers_workshop.py: subprocess.* call discloses shell/exec capability: tests/test_efficiency.py: subprocess.* call discloses shell/exec capability: tests/test_ensure_home.py: subprocess.* call discloses shell/exec capability: tests/test_exec_capability.py: subprocess.* call discloses shell/exec capability: tests/test_filepath_backstop_batch.py: subprocess.* call discloses shell/exec capability: tests/test_gate_cli.py: subprocess.* call discloses shell/exec capability: tests/test_git_hygiene.py: subprocess.* call discloses shell/exec capability: tests/test_gitignore_hygiene.py: subprocess.* call discloses shell/exec capability: tests/test_go_hook_parity.py: subprocess.* call discloses shell/exec capability: tests/test_hook_binaries_bundled.py: subprocess.* call discloses shell/exec capability: tests/test_hook_binary_locator.py: subprocess.* call discloses shell/exec capability: tests/test_hook_exit.py: subprocess.* call discloses shell/exec capability: tests/test_hook_stop.py: subprocess.* call discloses shell/exec capability: tests/test_init_hooks.py: subprocess.* call discloses shell/exec capability: tests/test_init_hooks_crossvendor.py: subprocess.* call discloses shell/exec capability: tests/test_init_skills.py: subprocess.* call discloses shell/exec capability: tests/test_install_levels.py: subprocess.* call discloses shell/exec capability: tests/test_interpret_parity.py: subprocess.* call discloses shell/exec capability: tests/test_lane_journal.py: subprocess.* call discloses shell/exec capability: tests/test_leak_scan.py: subprocess.* call discloses shell/exec capability: tests/test_liveness.py: subprocess.* call discloses shell/exec capability: tests/test_mcp_server.py: subprocess.* call discloses shell/exec capability: tests/test_memory_recall.py: subprocess.* call discloses shell/exec capability: tests/test_oracle_grep_in_process.py: subprocess.* call discloses shell/exec capability: tests/test_pick_priority.py: subprocess.* call discloses shell/exec capability: tests/test_plan_board.py: subprocess.* call discloses shell/exec capability: tests/test_plugin_manifest.py: subprocess.* call discloses shell/exec capability: tests/test_productivity.py: subprocess.* call discloses shell/exec capability: tests/test_release_bump.py: subprocess.* call discloses shell/exec capability: tests/test_render.py: subprocess.* call discloses shell/exec capability: tests/test_resume_cli.py: subprocess.* call discloses shell/exec capability: tests/test_resume_evidence.py: subprocess.* call discloses shell/exec capability: tests/test_retention.py: subprocess.* call discloses shell/exec capability: tests/test_scope_gate_cli.py: subprocess.* call discloses shell/exec capability: tests/test_skill_pack_dispatch.py: subprocess.* call discloses shell/exec capability: tests/test_skill_pack_generic.py: subprocess.* call discloses shell/exec capability: tests/test_skill_pack_operator_tier.py: subprocess.* call discloses shell/exec capability: tests/test_skill_pack_replan.py: subprocess.* call discloses shell/exec capability: tests/test_stamp_convention.py: subprocess.* call discloses shell/exec capability: tests/test_stamp_doctor.py: subprocess.* call discloses shell/exec capability: tests/test_stamp_filepath_rung.py: subprocess.* call discloses shell/exec capability: tests/test_stamp_trailer.py: subprocess.* call discloses shell/exec capability: tests/test_state_health_doctor.py: subprocess.* call discloses shell/exec capability: tests/test_subprocess_stdin_hygiene.py: subprocess.* call discloses shell/exec capability: tests/test_testwitness.py: subprocess.* call discloses shell/exec capability: tests/test_verdict_cli.py: subprocess.* call discloses dynamic code execution: src/dos/cli.py: uses eval/exec/__import__ discloses dynamic code execution: src/dos/guard.py: uses eval/exec/__import__ discloses dynamic code execution: src/dos/intervention_eval.py: uses eval/exec/__import__ discloses dynamic code execution: tests/test_cli_ergonomics.py: uses eval/exec/__import__ discloses dynamic code execution: tests/test_coverage.py: uses eval/exec/__import__ discloses dynamic code execution: tests/test_hook_stop.py: uses eval/exec/__import__ discloses dynamic code execution: tests/test_precursor_gate_eval.py: uses eval/exec/__import__ discloses dynamic code execution: tests/test_tool_stream.py: uses eval/exec/__import__ discloses broad/destructive filesystem access: src/dos/_demo_story.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: src/dos/_filelock.py: destructive filesystem call (shutil.rmtree/os.remove/etc.) discloses broad/destructive filesystem access: src/dos/cli.py: destructive filesystem call (shutil.rmtree/os.remove/etc.) discloses broad/destructive filesystem access: src/dos/cli.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: src/dos/drivers/ci_status.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: src/dos/home.py: destructive filesystem call (shutil.rmtree/os.remove/etc.) discloses broad/destructive filesystem access: src/dos/retention.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: src/dos/stamp.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_answer_shape.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_build_wheels_binary_format.py: destructive filesystem call (shutil.rmtree/os.remove/etc.) discloses broad/destructive filesystem access: tests/test_hook_binary_locator.py: open(…, 'w'/'a'/'x') write-mode file access discloses broad/destructive filesystem access: tests/test_hook_stop.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_marker_sensor.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_plugin_manifest.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_posttool_sensor.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_reindex.py: destructive filesystem call (shutil.rmtree/os.remove/etc.) discloses broad/destructive filesystem access: tests/test_stamp_filepath_rung.py: path traversal ('../') combined with file access discloses broad/destructive filesystem access: tests/test_toolathlon_replay.py: destructive filesystem call (shutil.rmtree/os.remove/etc.) Capability DISCLOSURE, not a verdict: static analysis sees the primitive is present and reachable, not whether its use is attacker-controlled.
Version behavior
unscannable10% of gradeDiff of tool definitions between versions; new permissions or changed descriptions in a patch release (the postmark-mcp class).
no prior version to diff (first sight of io.github.anthony-chaudhary/[email protected]); version-drift / rug-pull cannot be evaluated. Cold-start risk is covered by point-in-time checks (injection_surface, supply_chain, credential_hygiene), not here.
Transport config
warn10% of gradeRemote servers: TLS and auth mode (none/token/OAuth). Local servers: whether the manifest indicates it phones home.
sends telemetry to third-party SDK (Datadog) — disclosure, verify opt-in; manifest/source references telemetry behavior — disclosure
Version history
Each release plotted by grade against the safe line at B. A version that sinks below the line has lost its trusted standing — the shape of a rug-pull.
| Version | Published | Grade | Score | Inspected | Change |
|---|---|---|---|---|---|
| v0.30.0 · current | 2026-07-17 | D | 47.5 | 4/6 · 65% | — |