René's URL Explorer Experiment


Title: Pin @coana-tech/cli version; make reachability auto-update opt-in by mtorp · Pull Request #230 · SocketDev/socket-python-cli · GitHub

Open Graph Title: Pin @coana-tech/cli version; make reachability auto-update opt-in by mtorp · Pull Request #230 · SocketDev/socket-python-cli

X Title: Pin @coana-tech/cli version; make reachability auto-update opt-in by mtorp · Pull Request #230 · SocketDev/socket-python-cli

Description: Why The Python CLI auto-updated the reachability (Coana) engine to the latest published version on every --reach run via npm install -g @coana-tech/cli. Automatically pulling a brand-new engine version — without the operator opting in — is undesirable for environments that need to review/approve dependency updates before adopting them. This makes the engine version explicit and opt-in, and aligns the launcher behavior with the Socket Node CLI. What changed Pin the engine version (no silent auto-update) Reachability now runs a fixed @coana-tech/cli version baked into the release (DEFAULT_COANA_CLI_VERSION = 15.3.24, matching the Node CLI's pin). The engine version changes only through a standard pip upgrade of this CLI. The npm install -g @coana-tech/cli step (the auto-update) is removed entirely. An existing global install is left untouched — never auto-updated or downgraded. Opt into newest with --reach-version latest; pin an explicit version with --reach-version . Launcher (parity with the Socket Node CLI's dlx path) Run the engine via npx --yes --force @coana-tech/cli@ … — the exact flags the Node CLI passes for coana. --yes skips npx's interactive install prompt so non-interactive/CI runs don't hang. (Note: --force does not force a re-download of an already-cached pinned version; it mirrors the Node CLI's flags rather than bypassing the cache.) npm install + node fallback: if the npx launcher is missing or dies before the engine starts (spawn error / signal / exit ≥128), fall back to npm install --no-save --no-package-lock --no-audit --no-fund --prefix @coana-tech/cli@, resolve the bin from the installed package.json, and run via node. Small positive exit codes are real engine failures and are not retried. The resolved install is cached per version for the process lifetime (installs once). Tunable via SOCKET_CLI_COANA_FORCE_NPM_INSTALL (use the fallback as the primary path) and SOCKET_CLI_COANA_DISABLE_NPM_FALLBACK (never fall back). node is now part of the up-front prerequisite check. Strips npm_package_* env vars before spawning to avoid E2BIG in large monorepos. Docs / changelog Updated --reach-version help, docs/cli-reference.md, and CHANGELOG.md (2.4.7). Tests tests/unit/test_reachability.py (29 tests): spec resolution, the --yes --force flags, npm_package_* stripping, the launcher-failure heuristic, every fallback branch (launcher failure / missing npx / FORCE_NPM_INSTALL / DISABLE_NPM_FALLBACK), per-version install caching, the node-missing error, and real _resolve_coana_bin / _build_coana_node_cmd parsing. Full unit suite: 282 passed, 2 (pre-existing, unrelated) skips. Review A comprehensive automated review was run on this PR; its Major findings (accurate npx-cache wording, a per-version fallback cache to avoid temp-dir leak / re-install, and a clear error + prereq for a missing node) have been addressed in the latest commit. Maintenance note DEFAULT_COANA_CLI_VERSION is a deliberate, reviewable bump per release rather than an implicit "always latest". Reviewers should expect to update it (and the currently 15.3.24 references in the docs/CHANGELOG) together.

Open Graph Description: Why The Python CLI auto-updated the reachability (Coana) engine to the latest published version on every --reach run via npm install -g @coana-tech/cli. Automatically pulling a brand-new engine ver...

X Description: Why The Python CLI auto-updated the reachability (Coana) engine to the latest published version on every --reach run via npm install -g @coana-tech/cli. Automatically pulling a brand-new engine ver...

Opengraph URL: https://github.com/SocketDev/socket-python-cli/pull/230

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:aa3e28a1-d379-1d00-dc26-8894dd2bcda3
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8D1C:310BDB:2AFE12A:3B2E576:6A4F098E
html-safe-noncef7459a67d75fe1008aa1284a3710dd45383c7574e66473865c153a894e434bc8
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RDFDOjMxMEJEQjoyQUZFMTJBOjNCMkU1NzY6NkE0RjA5OEUiLCJ2aXNpdG9yX2lkIjoiNjg0Nzk3NTQxNzM3MjM2ODc4IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac6dfc4c4747926e0197152aa012dce0b136ec00b9cb8230a6e61afacd59a143c4
hovercard-subject-tagpull_request:3822528413
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/SocketDev/socket-python-cli/pull/230/files
twitter:imagehttps://avatars.githubusercontent.com/u/5579277?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/5579277?s=400&v=4
og:image:altWhy The Python CLI auto-updated the reachability (Coana) engine to the latest published version on every --reach run via npm install -g @coana-tech/cli. Automatically pulling a brand-new engine ver...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/SocketDev/socket-python-cli git https://github.com/SocketDev/socket-python-cli.git
octolytics-dimension-user_id69326764
octolytics-dimension-user_loginSocketDev
octolytics-dimension-repository_id802230750
octolytics-dimension-repository_nwoSocketDev/socket-python-cli
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id802230750
octolytics-dimension-repository_network_root_nwoSocketDev/socket-python-cli
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2b8f23afb982271f1b22258a94aede67a6b77760
ui-targetcanary-2
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/SocketDev/socket-python-cli/pull/230/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FSocketDev%2Fsocket-python-cli%2Fpull%2F230%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FSocketDev%2Fsocket-python-cli%2Fpull%2F230%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=SocketDev%2Fsocket-python-cli
Reloadhttps://github.com/SocketDev/socket-python-cli/pull/230/files
Reloadhttps://github.com/SocketDev/socket-python-cli/pull/230/files
Reloadhttps://github.com/SocketDev/socket-python-cli/pull/230/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
SocketDev https://github.com/SocketDev
socket-python-clihttps://github.com/SocketDev/socket-python-cli
Notifications https://github.com/login?return_to=%2FSocketDev%2Fsocket-python-cli
Fork 11 https://github.com/login?return_to=%2FSocketDev%2Fsocket-python-cli
Star 9 https://github.com/login?return_to=%2FSocketDev%2Fsocket-python-cli
Code https://github.com/SocketDev/socket-python-cli
Pull requests 5 https://github.com/SocketDev/socket-python-cli/pulls
Actions https://github.com/SocketDev/socket-python-cli/actions
Models https://github.com/SocketDev/socket-python-cli/models
Security and quality 0 https://github.com/SocketDev/socket-python-cli/security
Insights https://github.com/SocketDev/socket-python-cli/pulse
Code https://github.com/SocketDev/socket-python-cli
Pull requests https://github.com/SocketDev/socket-python-cli/pulls
Actions https://github.com/SocketDev/socket-python-cli/actions
Models https://github.com/SocketDev/socket-python-cli/models
Security and quality https://github.com/SocketDev/socket-python-cli/security
Insights https://github.com/SocketDev/socket-python-cli/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FSocketDev%2Fsocket-python-cli%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FSocketDev%2Fsocket-python-cli%2Fissues%2Fnew%2Fchoose
Martin Torp (mtorp)https://github.com/mtorp
mainhttps://github.com/SocketDev/socket-python-cli/tree/main
martin/remove-auto-update-from-the-socket-pythohttps://github.com/SocketDev/socket-python-cli/tree/martin/remove-auto-update-from-the-socket-pytho
Conversation 23 https://github.com/SocketDev/socket-python-cli/pull/230
Commits 8 https://github.com/SocketDev/socket-python-cli/pull/230/commits
Checks 26 https://github.com/SocketDev/socket-python-cli/pull/230/checks
Files changed https://github.com/SocketDev/socket-python-cli/pull/230/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
Pin @coana-tech/cli version; make reachability auto-update opt-in https://github.com/SocketDev/socket-python-cli/pull/230/files#top
Show all changes 8 commits https://github.com/SocketDev/socket-python-cli/pull/230/files
adb2de7 Pin @coana-tech/cli version; make reachability auto-update opt-in mtorp Jun 8, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/adb2de7dc8d0c51c36d5b87e13d96265411c1fa7
38d3a97 Disable npx caching and add npm-install + node fallback for coana mtorp Jun 8, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/38d3a97f752feb12b8d92c11dd1de38e26b42dd1
1ddb57f Bump pinned @coana-tech/cli to 15.3.24 mtorp Jun 8, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/1ddb57ffbc0b26fddbb2cf3f65d6e06ffeae0ce2
90f398d Address PR review: per-version fallback cache, node prereq, accurate … mtorp Jun 8, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/90f398dc94f4309150081b3947972de3682583b2
9ecceb2 Address review comments: Final annotation, atexit tmp cleanup, parame… mtorp Jun 9, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/9ecceb21363a5f2460266e5913c00f663f62c9a6
ec2b517 Move launch-strategy rationale from the spec resolver to _spawn_coana mtorp Jun 9, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/ec2b51718cf3963e565b29eb34e0b8936bb845f1
4fcc4d7 docs: show the real --reach-version default (15.3.24) in the Default … mtorp Jun 9, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/4fcc4d718f3ca286a629746de26a9947d127824e
41439f0 docs: show real reach-flag defaults from the Coana CLI implementation mtorp Jun 9, 2026 https://github.com/SocketDev/socket-python-cli/pull/230/commits/41439f04b8c67cdc40303694d0dc2870e27a2a05
Clear filters https://github.com/SocketDev/socket-python-cli/pull/230/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
CHANGELOG.md https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
cli-reference.md https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
pyproject.toml https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
__init__.py https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-9ae7a3b3f6a847c0c7bbe145ba187b0f9a0cfd2e1316ab84d135c13830934814
config.py https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
reachability.py https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-2d3f886fbe802447342eae99ca3fa81b8dec7b11b237522d3f19ee8a52a816c3
socketcli.py https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-42c07200ab90333cb355430e90c085abda17d6bb5705e57e1a141a6f404b2acc
test_reachability.py https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-0a132293c0ac158b51a56498f1965343039e98bea7eef36753f0bd04d55f5a94
uv.lock https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-84321598744d84dbee2318e634c74c9aae39a1c253f1c4bd17ebf9ef2f807b11
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
CHANGELOG.mdhttps://github.com/SocketDev/socket-python-cli/pull/230/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
View file https://github.com/SocketDev/socket-python-cli/blob/41439f04b8c67cdc40303694d0dc2870e27a2a05/CHANGELOG.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/230/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
docs/cli-reference.mdhttps://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
View file https://github.com/SocketDev/socket-python-cli/blob/41439f04b8c67cdc40303694d0dc2870e27a2a05/docs/cli-reference.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/230/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-d5d8360d1a358f2af4bbafbf521fa1a56bdd0b1bdf9bb397244d3bd650e7dd01
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
pyproject.tomlhttps://github.com/SocketDev/socket-python-cli/pull/230/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
View file https://github.com/SocketDev/socket-python-cli/blob/41439f04b8c67cdc40303694d0dc2870e27a2a05/pyproject.toml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/230/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
socketsecurity/__init__.pyhttps://github.com/SocketDev/socket-python-cli/pull/230/files#diff-9ae7a3b3f6a847c0c7bbe145ba187b0f9a0cfd2e1316ab84d135c13830934814
View file https://github.com/SocketDev/socket-python-cli/blob/41439f04b8c67cdc40303694d0dc2870e27a2a05/socketsecurity/__init__.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/230/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
socketsecurity/config.pyhttps://github.com/SocketDev/socket-python-cli/pull/230/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
View file https://github.com/SocketDev/socket-python-cli/blob/41439f04b8c67cdc40303694d0dc2870e27a2a05/socketsecurity/config.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/230/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/pull/230/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/230/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.