[PDF Skill] macOS: dependency install guidance should default to venv, not system `python -m pip`

Resolved 💬 2 comments Opened Feb 12, 2026 by kingtistel Closed Feb 12, 2026

What version of the Codex App are you using (From “About Codex” dialog)?

Version 260210.1703 (602)

What subscription do you have?

Business

What issue are you seeing?

Summary

On macOS, Codex sometimes suggests commands like python -m pip install ... that target system/global Python.
This often fails (permissions / externally-managed environment) and is not a reliable default.

The guidance should default to creating and using a virtual environment first.

Environment

  • OS: macOS (reproducible across setups)
  • Tooling: Codex CLI / agent workflow
  • Typical failing pattern: python -m pip install ... without an active venv

What steps can reproduce the bug?

Steps to Reproduce

  1. Ask Codex PDF skill to create a pdf.
  2. Codex suggests or runs python -m pip install ... to install Python dependencies (example: reportlab, pdfplumber, pypdf).
  3. Install attempts to write to system package directories.
  4. Command fails due to permission/external-management constraints.

What is the expected behavior?

Expected Behavior

Codex should prefer:

  1. python3 -m venv <path>
  2. source <path>/bin/activate
  3. python -m pip install -U pip
  4. python -m pip install <packages>

Optional: if uv is used, still require an active venv for package installation.

Additional information

Actual Behavior

Codex proposes system-level pip installs as a fallback path that takes longer and does not perform as well.

Why this matters

This is a common macOS failure mode and not environment-specific.
Defaulting to venv-based installs would prevent recurring setup failures and reduce user friction.

Proposed Fix

Update built-in install guidance (skills/prompts/docs) so Python dependency instructions always use isolated environments first, and avoid system Python installs by default.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗