Repository navigation
SEC-3320 Harden SDK dependencies, credential logging, and CI (Python 3.11+) - #476
Conversation
Broly Security ScanWarning Latest baseline snapshot is stale. Broly is running in PR-only fallback mode until the next scheduled baseline refreshes. This does not block the PR. Caution Note Re-scan this PR anytime with
|
…quire Python 3.11 Pillow 12.x is affected by 39 advisories fixed only in Pillow 13.0.0, which requires Python >= 3.11. Python 3.10 reached end of life in October 2026. - pyproject.toml: python ^3.11, pillow ^13.0.0, black target py311 - poetry.lock: targeted re-lock; pillow 13.0.0, drops py3.10-only backports (async-timeout, exceptiongroup, tomli); no other versions moved - CI: drop 3.10 from unit/integration matrices; publish on 3.11 - devcontainer base python:3.10 -> python:3.11; tox, README, CONTRIBUTING
This closes the dependency findings from the security scan and prevents SDK debug logs from disclosing credentials. Python 3.11+ is now required, allowing Pillow 13 to replace vulnerable Pillow releases. Part of SEC-3320; follows the certifi work in #474.
Changes
poetry-corerather than installing the full Poetry application and NumPy into its build environment. NumPy remains a dependency of optional example tooling.contents: read, resolving the existing CodeQL token-permission findings.vscode.Validation
pip-audit: zero known vulnerabilities across all 88 locked package versions, including development/examples and the alternate Python-specific NumPy resolution. Final lock versions were cross-checked against both audit reports.Requires-Python: >=3.11,<4.0and patched runtime floors.vscode, Python 3.11.17, Poetry 2.5.1, Git, andca-certificates 20250419+deb13u1. Rebuild the devcontainer to apply the image changes.Remaining environment limitation
The live integration workflow fails because
TOGETHER_API_KEYis unavailable. This predates these changes and was reproduced on the updated PR; live API integration coverage is not claimed. No API credential was added to the repository, and the failing check was not disabled.Residual upstream development-image findings
The SDK's locked dependency graph has zero known pip-audit findings; the complete development image is not CVE-free. A local Trivy 0.76.1 OS/Python scan of the final built image reports:
No advisories were suppressed or dismissed. Clearing these residual findings requires upstream distribution/installer updates or a separately validated replacement development environment. Broly has also reported incomplete container/AI analysis on prior scans; its neutral status must not be treated as a clean full-image scan.
Note
High Risk
Breaking Python 3.10 support and a minor release with broad dependency bumps affect all consumers; logging changes are security-positive but alter debug observability.
Overview
Raises the minimum Python version to 3.11 and ships 1.6.0 with refreshed, security-floored dependencies (including Pillow 13, patched
certifi/urllib3/transitives for pip installs), poetry-core builds, and Black removed from runtime requirements.Reduces credential leakage in debug logging: request/response debug lines log URL paths only (not query strings, bodies, or headers); async debug no longer dumps response bodies; error paths avoid logging response content.
TogetherClienthidesapi_keyandsupplied_headersfromrepr, with new unit tests locking this in.CI, publish, tox, devcontainer, and docs align on Python 3.11+, Poetry 2.5.1, tighter workflow
contents: readpermissions, and a hardened dev image (digest-pinned base, OS/CA updates, Poetry 2.5.1, non-root user, slimmer feature set). Pre-commit Black and mypy stubs move to match the new stack.Reviewed by Cursor Bugbot for commit 079eb7f. Bugbot is set up for automated code reviews on this repo. Configure here.