PACKAGES / gptme (Erik Bjareholt)
gptme
Terminal agent with local tools that writes code, runs shell commands and browses the web.
INSTALL
w3bs install gptme.org/gptmeNo w3bs yet? curl -fsSL https://w3bs.org/install.sh | sh
Get started
What to type once it is installed.
w3bs install gptme.org/gptmeInstall gptme and track it for updatesgptmeStart an interactive chat with tool usegptme '<task>'Start a session with a promptgptme -n '<task>'Run fully non-interactively, for scripts and CIgptme -rResume the most recent conversation
Every option: gptme --help · docs ↗
Malware scan
ThreatCrush found no malware indicators in gptme 0.36.0. The other findings below are ordinary code-review notes, not malware.
- Scanned
- 2026-11-05 12:03 UTC · threatcrush 0.13.30
- Files
- 1752 (installer + github.com/gptme/gptme@7a656435f2a5)
- Findings
- 10 high · 48 medium · 28 low
86 other findings (not malware)
- highoutbound request to a non-constant URL
source/gptme/cli/doctor.py:933py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/cli/doctor.py:1368py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/eval/suites/practical.py:222py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/mcp/registry.py:76py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/server/api_v2.py:244py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/server/api_v2.py:1109py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/tools/restart.py:236py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/gptme/util/export.py:61py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/scripts/check_model_freshness.py:128py-ssrf-outbound-request · CWE-918 - highoutbound request to a non-constant URL
source/scripts/verify_cloudflare_pages_deep_links.py:46py-ssrf-outbound-request · CWE-918 - mediumpredictable temporary file path
source/.github/workflows/self-heal.yml:141insecure-temp-file · CWE-377 - mediumpredictable temporary file path
source/.github/workflows/self-heal.yml:303insecure-temp-file · CWE-377 - mediumstack trace returned to the caller
source/gptme/cli/main.py:1757py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/eval/dspy/prompt_optimizer.py:361py-stack-trace-returned · CWE-209 - mediumbroken hash algorithm
source/gptme/eval/run.py:650py-weak-hash · CWE-327 - mediumdeserialisation of untrusted data
source/gptme/lessons/parser.py:349py-unsafe-deserialization · CWE-502 - mediumstack trace returned to the caller
source/gptme/mcp/client.py:179py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/api_v2_agents.py:92py-stack-trace-returned · CWE-209 - mediumbroken hash algorithm
source/gptme/server/api_v2.py:740py-weak-hash · CWE-327 - mediumbroken hash algorithm
source/gptme/server/api_v2.py:759py-weak-hash · CWE-327 - mediumstack trace returned to the caller
source/gptme/server/api_v2.py:2844py-stack-trace-returned · CWE-209 - mediumbroken hash algorithm
source/gptme/server/artifacts_api.py:197py-weak-hash · CWE-327 - mediumstack trace returned to the caller
source/gptme/server/client.py:291py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/tools_api.py:337py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/tools_api.py:354py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:352py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:357py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:441py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:474py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:535py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:538py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:625py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:630py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:692py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/server/workspace_api.py:697py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/tools/convert.py:1085py-stack-trace-returned · CWE-209 - mediumstack trace returned to the caller
source/gptme/tools/mcp_adapter.py:1237py-stack-trace-returned · CWE-209 - mediumdeserialisation of untrusted data
source/gptme/tools/python_kernel.py:262py-unsafe-deserialization · CWE-502 - mediumstack trace returned to the caller
source/gptme/tools/subagent/batch.py:176py-stack-trace-returned · CWE-209 - medium`v-html` binding
source/gptme/util/export_templates/index.html:138tpl-vue-v-html · CWE-79 - mediumunescaped HTML rendering
source/gptme/util/export_templates/main.js:532js-unescaped-html-sink · CWE-79 - mediumpredictable temporary file
source/scripts/computer_home/mutter_startup.sh:5sh-predictable-temp-path · CWE-377 - mediumpredictable temporary file
source/scripts/computer_home/novnc_startup.sh:11sh-predictable-temp-path · CWE-377 - mediumpredictable temporary file
source/scripts/computer_home/tint2_startup.sh:5sh-predictable-temp-path · CWE-377 - mediumpredictable temporary file
source/scripts/computer_home/x11vnc_startup.sh:9sh-predictable-temp-path · CWE-377 - mediumpredictable temporary file
source/scripts/computer_home/x11vnc_startup.sh:31sh-predictable-temp-path · CWE-377 - mediumbroken hash algorithm
source/scripts/treeofthoughts.py:145py-weak-hash · CWE-327 - mediumredirect to a non-constant destination
source/site/next/src/client.ts:12js-open-redirect · CWE-601 - mediumunescaped HTML rendering
source/webui/src/components/CodeDisplay.tsx:74js-unescaped-html-sink · CWE-79 - mediumunescaped HTML rendering
source/webui/src/components/TabbedCodeBlock.tsx:90js-unescaped-html-sink · CWE-79 - mediumdynamic code execution
source/webui/src/utils/consoleProxy.ts:61js-dynamic-code-execution · CWE-95 - mediumunescaped HTML rendering
source/webui/src/utils/markdownRenderer.ts:131js-unescaped-html-sink · CWE-79 - mediumunescaped HTML rendering
source/webui/src/utils/markdownRenderer.ts:154js-unescaped-html-sink · CWE-79 - mediumunescaped HTML rendering
source/webui/src/utils/markdownRenderer.ts:180js-unescaped-html-sink · CWE-79 - mediumunescaped HTML rendering
source/webui/src/utils/markdownRenderer.ts:214js-unescaped-html-sink · CWE-79 - mediumunescaped HTML rendering
source/webui/src/utils/markdownRenderer.ts:279js-unescaped-html-sink · CWE-79 - mediumredirect to a non-constant destination
source/webui/src/utils/navigation.ts:8js-open-redirect · CWE-601 - mediumredirect to a non-constant destination
source/webui/src/utils/taskApi.ts:229js-open-redirect · CWE-601 - lowpredictable temporary file path
source/docs/releases/v0.32.0.md:1211insecure-temp-file · CWE-377 - lowHardcoded Credential
source/gptme/eval/suites/practical9.py:178secret-generic-credential · CWE-798 - lowshell command built from a string
source/gptme/eval/swe_extra/swe_bench_test_spec.py:137py-shell-command-string · CWE-78 - lowshell command built from a string
source/gptme/eval/swe_extra/swe_bench_test_spec.py:147py-shell-command-string · CWE-78 - lowshell command built from a string
source/gptme/eval/swe_extra/swe_bench_test_spec.py:157py-shell-command-string · CWE-78 - lowunescaped HTML rendering
source/site/next/scripts/check-assets.test.mjs:77js-unescaped-html-sink · CWE-79 - lowHardcoded Credential
source/tauri/src-tauri/src/lib.rs:1191secret-generic-credential · CWE-798 - lowpredictable temporary file path
source/tests/test_cli.py:1500insecure-temp-file · CWE-377 - lowbroken hash algorithm
source/tests/test_eval.py:1264py-weak-hash · CWE-327 - lowbroken hash algorithm
source/tests/test_eval.py:1265py-weak-hash · CWE-327 - lowoutbound request to a non-constant URL
source/tests/test_server_bad_input.py:82py-ssrf-outbound-request · CWE-918 - lowoutbound request to a non-constant URL
source/tests/test_server_bad_input.py:199py-ssrf-outbound-request · CWE-918 - lowoutbound request to a non-constant URL
source/tests/test_server_bad_input.py:278py-ssrf-outbound-request · CWE-918 - lowoutbound request to a non-constant URL
source/tests/test_server_startup.py:114py-ssrf-outbound-request · CWE-918 - lowHardcoded Credential
source/tests/test_shell_redact_secrets.py:24secret-generic-credential · CWE-798 - lowJSON Web Token
source/tests/test_shell_redact_secrets.py:71secret-jwt · CWE-798 - lowAWS Access Key
source/tests/test_subagent_unit.py:2872secret-aws-access-key · CWE-798 - lowAWS Access Key
source/tests/test_subagent_unit.py:2873secret-aws-access-key · CWE-798 - lowdeserialisation of untrusted data
source/tests/test_tools_python_kernel.py:436py-unsafe-deserialization · CWE-502 - lowdeserialisation of untrusted data
source/tests/test_tools_python_kernel.py:451py-unsafe-deserialization · CWE-502 - lowpredictable temporary file path
source/tests/test_tools_shell.py:1684insecure-temp-file · CWE-377 - lowdynamic code execution
source/tests/test_tools_watch.py:710py-dynamic-code-execution · CWE-95 - lowSQL built from a template literal or f-string
source/tests/test_util_review.py:4050sql-template-interpolation · CWE-89 - lowSQL built from a template literal or f-string
source/tests/test_util_review.py:4071sql-template-interpolation · CWE-89 - lowHardcoded Credential
source/webui/src/contexts/__tests__/SettingsContext.test.tsx:65secret-generic-credential · CWE-798 - lowHardcoded Credential
source/webui/src/contexts/__tests__/SettingsContext.test.tsx:66secret-generic-credential · CWE-798 - lowunescaped HTML rendering
source/webui/src/utils/__tests__/markdownUtils.test.ts:150js-unescaped-html-sink · CWE-79 - lowunescaped HTML rendering
source/webui/src/utils/__tests__/markdownUtils.test.ts:207js-unescaped-html-sink · CWE-79
Badge for your README
[](https://w3bs.org/packages/gptme.org/gptme)