# Risk map — python-poetry/poetry

> Canonical page: https://codevetter.com/unpack/poetry/risk-map

# Risk map — python-poetry/poetry

Scanned commit d4fd21e4711ae948f04e18a1736d9ee85b590e87 (2026-09-27). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The main sensitive boundaries are plugin imports, backend execution, credentials, remote artifacts, and writes into Python environments. Source contains guards for credential scheme handling, archive hashes, and installation paths, alongside deliberate compatibility exceptions. Persistence and environment updates occur in separate steps, which deserves attention during failure-path changes. These are source observations or labeled hypotheses, not confirmed vulnerabilities or an exhaustive security audit.
- Plugin loading executes entry-point classes inside Poetry's process; existing project plugin paths are prepended and passed to addsitedir, which processes .pth files, unless application plugin loading is disabled. — [src/poetry/plugins/plugin_manager.py#L54-L106](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/plugins/plugin_manager.py#L54-L106) [src/poetry/console/application.py#L630-L646](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/console/application.py#L630-L646)
- Package builds invoke backend subprocesses in ephemeral environments, and editable root builds can execute a configured build script via env.run; environment isolation here does not document an OS security sandbox. — [src/poetry/utils/isolated_build.py#L175-L219](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/isolated_build.py#L175-L219) [src/poetry/masonry/builders/editable.py#L59-L87](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/masonry/builders/editable.py#L59-L87)
- PasswordManager falls back to plaintext auth configuration when keyring is unavailable or disabled, with a warning; credential-storage changes therefore affect user-level sensitive state. — [src/poetry/utils/password_manager.py#L195-L219](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/password_manager.py#L195-L219) [src/poetry/utils/password_manager.py#L258-L267](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/password_manager.py#L258-L267) [src/poetry/config/config.py#L447-L453](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/config/config.py#L447-L453)
- Authenticator scopes configured credentials to host and chooses among same-host repositories by path affinity; it rejects HTTPS-configured credentials for non-HTTPS requests, but certificate configuration can explicitly disable verification. — [src/poetry/utils/authenticator.py#L440-L481](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/authenticator.py#L440-L481) [src/poetry/utils/authenticator.py#L48-L62](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/authenticator.py#L48-L62) [src/poetry/utils/authenticator.py#L234-L246](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/authenticator.py#L234-L246)
- Archive hash validation is conditional on package.files; when present, missing filenames, unusable hash algorithms, or mismatches fail. Wheel RECORD content validation is disabled and validation issues are collected rather than immediately rejecting the wheel. — [src/poetry/installation/executor.py#L802-L835](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/installation/executor.py#L802-L835) [src/poetry/installation/wheel_installer.py#L132-L140](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/installation/wheel_installer.py#L132-L140)
- Environment writes extend outside the checkout, including the system environment when virtualenv creation is disabled; WheelDestination checks target containment but permits overwriting existing files with a warning. — [src/poetry/utils/env/env_manager.py#L228-L250](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/utils/env/env_manager.py#L228-L250) [src/poetry/installation/wheel_installer.py#L80-L104](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/installation/wheel_installer.py#L80-L104)
- Hypothesis: interrupted operations can leave partially changed environments or mismatched project/lock state because builtin uninstall removes without rollback, lock writing is direct, and add writes project TOML after installation/lock work. (inferred) — [src/poetry/installation/uninstaller.py#L16-L26](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/installation/uninstaller.py#L16-L26) [src/poetry/packages/locker.py#L261-L288](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/packages/locker.py#L261-L288) [src/poetry/installation/installer.py#L375-L380](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/installation/installer.py#L375-L380) [src/poetry/console/commands/add.py#L410-L413](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/console/commands/add.py#L410-L413)
- Transaction deliberately treats some index source changes as equivalent: switching between PyPI and legacy sources can produce no update when installed source metadata is absent; provenance-sensitive changes must preserve or reassess this compatibility branch. — [src/poetry/puzzle/transaction.py#L111-L135](https://github.com/python-poetry/poetry/blob/d4fd21e4711ae948f04e18a1736d9ee85b590e87/src/poetry/puzzle/transaction.py#L111-L135)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
