René's URL Explorer Experiment


Title: feat: stream CLI log transcripts and run status to Socket backend by barslev · Pull Request #201 · SocketDev/socket-python-cli · GitHub

Open Graph Title: feat: stream CLI log transcripts and run status to Socket backend by barslev · Pull Request #201 · SocketDev/socket-python-cli

X Title: feat: stream CLI log transcripts and run status to Socket backend by barslev · Pull Request #201 · SocketDev/socket-python-cli

Description: Adds an opt-in streaming log channel between the Python CLI and the Socket backend so the CLI run's terminal status (in_progress / success / failure / cancelled) and a transcript of its own log output are visible in the Socket admin views when the user opts in with --upload-logs. The Socket backend may also force-enable streaming for specific orgs regardless of the flag. Why? The Socket backend currently has no visibility into what happens inside a CLI invocation — there's no record of whether a scan ran to completion or what was logged along the way. This PR opens a bounded, opt-in side-channel that uploads the CLI's own log records to the backend and reports the run's terminal status, without changing any existing CLI request on the wire. Changes New modules socketsecurity/core/cli_run.py — register_cli_run and finalize_cli_run lifecycle helpers, both best-effort. register_cli_run always calls POST /v0/python-cli-runs with the user's share_logs choice; the server responds with log_streaming_enabled and a nullable run_id. The CLI gates the rest of the lifecycle on log_streaming_enabled (the server can force-enable for an org even when the client didn't ask). finalize_cli_run accepts an optional report_run_id that links the run to the full-scan it produced. socketsecurity/core/log_uploader.py — BatchedLogUploader (daemon-thread flusher, 5s flush interval, swallows all network errors at-most-once, skips empty buffers, drains on shutdown) plus UploadingLogHandler — a logging.Handler that routes records to the uploader. Includes a thread-local recursion guard so the uploader's own request-error logs aren't re-enqueued mid-flush. socketsecurity/core/streaming.py — setup_streaming() wires the uploader and a terminal handler into the socketcli and socketdev loggers, forces both loggers to DEBUG so the upload captures the full history regardless of --enable-debug state, and returns a teardown callable for the caller to register with atexit. Module-level setters set_run_status() and set_report_run_id() propagate the terminal status and the associated full-scan id into finalize_cli_run. Existing files socketsecurity/config.py — adds --upload-logs / --upload_logs opt-in flag (advanced group, default off). When set, the CLI sends share_logs=true in the register payload. socketsecurity/socketcli.py — always calls setup_streaming() after CliClient init (register is cheap and the server may force-enable for an org); registers the teardown via atexit only when the server returned a run_id. Captures diff.id at a single chokepoint after the diff-producing branches converge and threads it through set_report_run_id(), guarded against the NO_DIFF_RAN / NO_SCAN_RAN sentinel values. Exception handlers in cli() now call set_run_status(...): KeyboardInterrupt → cancelled any SystemExit with non-zero code → failure uncaught Exception → failure clean exit → default success The SystemExit handling is load-bearing: several failure paths in main_code() call sys.exit(3) directly, which bypasses except Exception (since SystemExit is a BaseException subclass, not Exception). Test plan uv run pytest tests/unit — 171 unit tests pass, including the new tests in test_cli_run.py, test_log_uploader.py, and test_streaming.py (covering opt-in/opt-out register paths and the disabled-by-server response shape). End-to-end against a local Socket backend with the matching endpoints applied: --upload-logs set, server says enabled → full CLI log captured, run reports status: success, report_run_id populated with the full-scan id and joinable to the underlying full_scans row --upload-logs set, simulated RuntimeError → run reports status: failure, log captured up to the crash 15s continuous-log run → batches arrive at the backend at ~5s intervals while the CLI is still running Without --upload-logs (and no org-side override) → CLI calls register, gets log_streaming_enabled: false, sends no further streaming requests; scan otherwise unchanged Register failure (404 / 401 / network down) → CLI silently degrades, scan continues normally, no exception surfaces Public Changelog A new opt-in --upload-logs flag uploads the CLI's log output to the Socket backend for the duration of the run, alongside a per-run status (in_progress / success / failure / cancelled). The transcript is captured regardless of the local --enable-debug state; the existing terminal verbosity is unchanged. The Socket backend can also force-enable streaming for specific orgs regardless of the flag. Default off; CLI runs without the flag are unaffected.

Open Graph Description: Adds an opt-in streaming log channel between the Python CLI and the Socket backend so the CLI run's terminal status (in_progress / success / failure / cancelled) and a transcript of its own log...

X Description: Adds an opt-in streaming log channel between the Python CLI and the Socket backend so the CLI run's terminal status (in_progress / success / failure / cancelled) and a transcript of its own...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:bc38dd08-f248-3ee9-eb4d-eb033eb0f1e8
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idEAD6:1B445F:2268C2E:2FB7119:6A4F462B
html-safe-nonceae027f51a5f13a83e277917ace70c5c1406e8b07913895569738ed3697eb5a95
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQUQ2OjFCNDQ1RjoyMjY4QzJFOjJGQjcxMTk6NkE0RjQ2MkIiLCJ2aXNpdG9yX2lkIjoiNzkwODc5ODYyOTQxMzg2NTAwMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmaca2ad4f533b90a07df839743aba97ee43568592abc85baa4f906f7df51b992eb1
hovercard-subject-tagpull_request:3668049570
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/201/files
twitter:imagehttps://avatars.githubusercontent.com/u/3726263?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/3726263?s=400&v=4
og:image:altAdds an opt-in streaming log channel between the Python CLI and the Socket backend so the CLI run's terminal status (in_progress / success / failure / cancelled) and a transcript of its own log...
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
release4b249b445842943ed31549e027f57a8ade9881ed
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/SocketDev/socket-python-cli/pull/201/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%2F201%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%2F201%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/201/files
Reloadhttps://github.com/SocketDev/socket-python-cli/pull/201/files
Reloadhttps://github.com/SocketDev/socket-python-cli/pull/201/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/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
Benjamin Barslev Nielsen (barslev)https://github.com/barslev
mainhttps://github.com/SocketDev/socket-python-cli/tree/main
barslev/streaming-logshttps://github.com/SocketDev/socket-python-cli/tree/barslev/streaming-logs
Conversation 17 https://github.com/SocketDev/socket-python-cli/pull/201
Commits 17 https://github.com/SocketDev/socket-python-cli/pull/201/commits
Checks 26 https://github.com/SocketDev/socket-python-cli/pull/201/checks
Files changed https://github.com/SocketDev/socket-python-cli/pull/201/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/files
feat: stream CLI log transcripts and run status to Socket backend https://github.com/SocketDev/socket-python-cli/pull/201/files#top
Show all changes 17 commits https://github.com/SocketDev/socket-python-cli/pull/201/files
681f078 feat: stream CLI logs to /python-cli-runs/* lifecycle endpoints barslev May 12, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/681f0786724c31c46771fc5e3b50100ad9734ff0
b07e621 chore: drop per-batch size chunking to match upstream uploader barslev May 14, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/b07e6213df95455ce058528e5fa2971c2b5e00ec
03b6126 chore: drop integration field from cli-run register payload barslev May 15, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/03b61266b9a601c2c771c505731e6f91abafd174
d18795d feat: link cli-run to its full_scan via report_run_id on finalize barslev May 15, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/d18795dab70c2625b2aaa7822063d58fd42d5482
0e8746d chore: bump version to 2.2.87 for streaming logs feature barslev May 16, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/0e8746d75aafd527bd2c9b9673b6cab94653a9c3
19216ce feat: flip streaming logs to opt-in via --upload-logs barslev Jun 10, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/19216cec87be94561f100422ee097a0552c871c0
27d84d5 Merge remote-tracking branch 'origin/main' into barslev/streaming-logs barslev Jun 10, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/27d84d58c727a3e232bea18f0a1c3dce4d8eed15
06982fb chore: regenerate uv.lock for version 2.4.8 barslev Jun 10, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/06982fb64ebcfeebc64e6608532339adce6f19a5
3b154de feat: add --no-upload-logs to explicitly decline log upload barslev Jun 11, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/3b154de8db80c6a0ba42fe107c5e536298558500
4c50f11 Merge remote-tracking branch 'origin/main' into barslev/streaming-logs barslev Jun 11, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/4c50f11bf0ee5f753d42438a40f809a24150f706
2b9a9b7 chore: bump version to 2.4.9 barslev Jun 11, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/2b9a9b7b6c60676715251aa959b0672bb696c239
678518c chore: bump __version__ to 2.4.9 barslev Jun 11, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/678518c7f5df82689c4a33fcabb6c77e2677c007
900f74b refactor: address PR review on streaming logs barslev Jun 11, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/900f74be3d6a194922dbead63f1903f0f2dc5be8
d630013 test(log_uploader): cover cross-thread emit during active flush barslev Jun 11, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/d6300137550e648a0b46211071c913ada5c70345
7561b2f refactor(config): use store_const + mutually exclusive group for log-… barslev Jun 12, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/7561b2f71cb2501b7033c64dad37b1e3b6c18688
a2d5733 refactor: push upload_logs tri-state down to the API boundary barslev Jun 12, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/a2d57335f5c62c2a52471c942d2eec9fbf01085e
008999a fix(cli_run): broaden register exception handling to honor 'never bre… barslev Jun 12, 2026 https://github.com/SocketDev/socket-python-cli/pull/201/commits/008999af33f8a8db645a38ee56fac30fb25e259f
Clear filters https://github.com/SocketDev/socket-python-cli/pull/201/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/files
CHANGELOG.md https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
pyproject.toml https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
__init__.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-9ae7a3b3f6a847c0c7bbe145ba187b0f9a0cfd2e1316ab84d135c13830934814
config.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
cli_run.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-e586b71adb814ad5e6867f7de8939602bc1c2cf93f5bb0539f35ec9cb58c9f25
log_uploader.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-2cd14089232e53631090040c40eb07a8dabb3f0e392d586cb3fc2d54a6be9175
streaming.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-bcd851922122a743388e65daf816a101f492e5fc86c3925098e4f28594ec1e7c
socketcli.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-42c07200ab90333cb355430e90c085abda17d6bb5705e57e1a141a6f404b2acc
test_cli_run.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-5c3b543769bf3cc26b7ebb10203228cabfc41a2f555feaf772ba38f11a84058e
test_log_uploader.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-543af7251b4f052e11443341dd627c4d6c8a8226d5d8a2098c108c47e1a3a1d4
test_streaming.py https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-28832fdaa653f48811042db889d659ec24df0c69e6f00446ae1431c6d49ad79f
uv.lock https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-84321598744d84dbee2318e634c74c9aae39a1c253f1c4bd17ebf9ef2f807b11
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
CHANGELOG.mdhttps://github.com/SocketDev/socket-python-cli/pull/201/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/CHANGELOG.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
pyproject.tomlhttps://github.com/SocketDev/socket-python-cli/pull/201/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/pyproject.toml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
https://github.com/SocketDev/socket-python-cli/pull/201/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/201/files#diff-9ae7a3b3f6a847c0c7bbe145ba187b0f9a0cfd2e1316ab84d135c13830934814
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/socketsecurity/__init__.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
socketsecurity/config.pyhttps://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/socketsecurity/config.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/pull/201/files#diff-aebad19fe6b5fc1a1abf8ccc19fdb19ee60ecb32f904a44d206d20f4abf23536
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
socketsecurity/core/cli_run.pyhttps://github.com/SocketDev/socket-python-cli/pull/201/files#diff-e586b71adb814ad5e6867f7de8939602bc1c2cf93f5bb0539f35ec9cb58c9f25
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/socketsecurity/core/cli_run.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
socketsecurity/core/log_uploader.pyhttps://github.com/SocketDev/socket-python-cli/pull/201/files#diff-2cd14089232e53631090040c40eb07a8dabb3f0e392d586cb3fc2d54a6be9175
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/socketsecurity/core/log_uploader.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/files
https://github.com/SocketDev/socket-python-cli/blob/main/.github/CODEOWNERS#L1
socketsecurity/core/streaming.pyhttps://github.com/SocketDev/socket-python-cli/pull/201/files#diff-bcd851922122a743388e65daf816a101f492e5fc86c3925098e4f28594ec1e7c
View file https://github.com/SocketDev/socket-python-cli/blob/008999af33f8a8db645a38ee56fac30fb25e259f/socketsecurity/core/streaming.py
Open in desktop https://desktop.github.com
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/files
https://github.co/hiddenchars
https://github.com/SocketDev/socket-python-cli/pull/201/{{ revealButtonHref }}
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/files
Please reload this pagehttps://github.com/SocketDev/socket-python-cli/pull/201/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.