AutoGPT Platform
Significant Gravitas · agpt.co
AutoGPT Platform is a hosted agent and workflow builder with an assistant (Otto) and Experts. Its runtime source is published under PolyForm Shield. Workflows can be exported as JSON and imported into a self-hosted instance, and workflow graphs are versioned. Most other agent state (memory, history, Experts, credentials) stays on the provider's service, and the provider controls prompts, models and flags remotely.
- Workflow JSON export and import into a self-hosted instance (P1, P3)
- Self-hostable runtime with no licence check or required phone-home (P3)
- Graph version history with rollback (V3)
- Any MCP server can be added without review; approval blocks can go anywhere in a workflow (M3, C2)
- No full export; memory, history, Experts and credentials stay with the provider (P2, T1)
- Provider-controlled prompt (Langfuse), model routing and flags, with no pinning (T2, M5)
- No tamper-evident action record or owner-rooted identity (A2, V2)
- No account deletion, undisclosed retention, and terms reserving unrestricted use of submitted information (C6, T3, C4)
All 26 findings
Cloud platform as of 2026-09-30. Code evidence from Significant-Gravitas/AutoGPT commit 39856ae4533ce7025647dfc6e899a1c56f1324e5 (autogpt_platform/, 2026-09-30), assumed to reflect the cloud deployment but not verifiable (see V1). Desk review only: no signup, login or use of hosted services.
Portable · Can you leave, take the whole agent with you, and keep it alive?
30%- P1Owner-usable round trip
A single UI action exports a workflow as JSON, and a documented Import action restores it on a self-hosted instance, which counts as non-provider infrastructure. But restoring means standing up that instance first: cloning, generating env config and running Docker Compose by hand, since the docs say not to use the hosted one-command installer yet. That is one shortfall.
- Sharing and exporting agents
- Self-hosting installer
- Self-hosting getting started
- Graph export endpoint
- Agent upload (import) tab
› How it could pass
Suggestions. Any change that meets the test counts.
- Ship a supported one-step installer or desktop runtime that imports an export bundle and starts it working
- Pair the export with a matching one-action restore on non-provider infrastructure
Partial - P2Complete export
The export covers one workflow graph with its sub-graphs. Credentials, secrets and webhook IDs are stripped. Otto/Expert configuration, memory (Graphiti and the business-understanding profile), execution history, schedules, presets and credentials have no export. Workspace files download one at a time, and the chat export is Markdown that skips tool-result messages.
- Export stripping (NodeModel.stripped_for_export)
- Chat export as Markdown
- Workspace file routes
- Expert routes (no export)
- Provider OAuth client settings
› How it could pass
Suggestions. Any change that meets the test counts.
- Offer one export covering Experts, memory, execution history, schedules, presets, skills and workspace files
- Include re-linkable integration definitions that do not depend on AutoGPT-registered OAuth clients
Fail - P3Runs without the provider
An exported graph runs on the self-hostable runtime. No licence check, update check or AutoGPT-run service is needed, and LaunchDarkly, Langfuse, Sentry and PostHog are off when their keys are empty. The PolyForm Shield grant is not stated to be perpetual or irrevocable, bars competing uses, and ends on an uncured violation after notice. Features gated by LaunchDarkly flags fall back to code defaults (for example, Graphiti memory is off) unless the owner forces them by env var. Provider-managed credentials must be replaced with the owner's own keys.
- autogpt_platform/LICENSE.md (PolyForm Shield 1.0.0)
- backend/.env.default
- Feature flag client (LaunchDarkly optional)
- Graphiti memory gating
- Self-hosting single container
› How it could pass
Suggestions. Any change that meets the test counts.
- Grant an explicitly perpetual, irrevocable right to run exported agents that does not depend on non-compete compliance
- Make every flag-gated capability owner-configurable without a provider flag service
Partial - P4Model independence
On the cloud offering, workflow LLM blocks can use models from several vendors (Anthropic, OpenAI, Google, Meta, Mistral and others via hosted APIs), and Otto can use a Codex or Microsoft 365 Copilot connection. The cloud cannot use local models: the docs say Ollama is self-host only and that cloud AutoPilot routes through Anthropic/OpenRouter. Owners choose only a Balanced/Advanced tier. Voice, transcription and search embeddings are tied to specific OpenAI models.
- Ollama (self-hosting only)
- Copilot local LLM (self-hosting only)
- Copilot model routing
- Copilot config (TTS model, defaults)
- Search embeddings
› How it could pass
Suggestions. Any change that meets the test counts.
- Allow an owner-supplied OpenAI-compatible or local endpoint for Otto and blocks on the cloud
- Remove capability dependencies on specific hosted models (TTS, transcription, embeddings)
Partial - P5Exit survives termination
Clause 8.2 of the Terms lets AutoGPT suspend or terminate access to the Platform at any time, and clause 4.2 lets it terminate registrations at any time. There is no post-termination export window, no shutdown plan and no owner-held copy of state by default.
› How it could pass
Suggestions. Any change that meets the test counts.
- Commit in binding terms to an export window of at least 30 days after any termination, including bans
- Publish a shutdown plan, or keep a continuously synced owner-held copy of agent state
Fail
Transparent · Can you see everything the agent is, and everything shaping it?
13%- T1Readable without the provider
Agent state (graphs, executions, chats, Experts, memory in FalkorDB, profile) lives in provider-operated Postgres and FalkorDB. Apart from the graph JSON and Markdown chat exports, it can be read only through the hosted service. Credentials are encrypted with a server-side key the provider holds.
› How it could pass
Suggestions. Any change that meets the test counts.
- Export all state in documented formats with a published schema
- Let the owner hold the keys for stored credentials, or export them to the owner
Fail - T2What runs is what you see
Otto's base system prompt is fetched at runtime from the provider's Langfuse prompt store; the code fallback is not necessarily what runs. The server-injected context blocks are removed before display, and compaction summaries are deliberately hidden from the card. The exact model is chosen per user by a provider LaunchDarkly routing flag, and owners see only a tier. Several behaviour switches are provider-side flags. Both shortfalls apply.
› How it could pass
Suggestions. Any change that meets the test counts.
- Show the fully assembled context, including the Langfuse-served prompt, injected blocks and compaction summaries
- Show the exact model and every flag in effect for each call
Fail - T3No shadow data
The privacy policy collects a broad profile (interests, LinkedIn presence, location, usage). On retention it says only that data is not kept longer than needed, with details available by email, so retention is neither disclosed nor bounded. (The agent-used business-understanding profile is graded in M2.)
› How it could pass
Suggestions. Any change that meets the test counts.
- Publish a retention table with bounded periods for every data class
- Let the owner view every profile and derived record held about them
Fail - T4No hidden steering
I found no paid or sponsored placement in the code. Onboarding recommendations sort provider-featured marketplace agents first. Otto's find_agent tool steers toward marketplace agents, and provider-chosen default models and managed credentials are auto-selected. None of this is covered by a binding no-steering commitment, and the featured ordering cannot be switched off.
› How it could pass
Suggestions. Any change that meets the test counts.
- Put a binding no-paid-placement commitment in the terms
- Disclose featured/provider-preferred defaults and let the owner switch them off
Partial
Auditable · Can you reconstruct exactly what the agent did, and trust the record?
17%- A1Complete action record
Graph runs record inputs, outputs and trigger source (manual, schedule, webhook, sub-graph, copilot). Copilot block runs are recorded only as chat tool messages, with tool output truncated to about 100 KB. Admin impersonation acts under the user's ID and is logged only server-side, so staff actions are not distinguishable in the owner's record. Activity-event and cost-log writes swallow errors. Two or more shortfalls apply.
- Execution trigger sources
- Tool output truncation
- Admin impersonation logging
- Best-effort activity events
› How it could pass
Suggestions. Any change that meets the test counts.
- Record provider/staff-initiated actions as such in the owner-visible record
- Keep complete tool arguments and outputs without truncation, and alert the owner when recording fails
Fail - A2Tamper-evident, owner-checkable
The execution and chat records carry no hash chain, signature or external anchor. The model the code calls an 'append-only' ActivityEvent has no enforcing trigger or permissions, and the chat-message rows can be updated in place.
› How it could pass
Suggestions. Any change that meets the test counts.
- Hash-chain or sign action-record entries and publish an open verifier
- Anchor checkpoints with the owner or an independent witness
Fail - A3Agent cannot rewrite its record
Execution and chat records are written by the backend, and no copilot tool deletes executions, graphs or chat history. However, tool outputs over about 80 KB are moved to workspace files, leaving only a preview in the chat, and the agent has a delete_workspace_file tool. That is one path to suppress part of the record. The protection is also undocumented.
› How it could pass
Suggestions. Any change that meets the test counts.
- Store offloaded tool outputs where agent tools cannot delete them
- Document the record's write path and how the owner can check it
Partial
Verifiable · Can you prove what it runs, who it is, and what changed?
33%- V1Obtainable source, matching build
Source for the platform is public under PolyForm Shield, which allows modification for permitted, non-competing purposes. Owners have no way to tie the hosted cloud build to a commit. The production system prompt and flag configuration come from Langfuse and LaunchDarkly rather than the repository.
› How it could pass
Suggestions. Any change that meets the test counts.
- Publish verifiable build provenance for the deployed cloud release
- Relicense under terms that let owners have others maintain the runtime without a non-compete
Partial - V2Owner-rooted identity
Agents and Experts have no cryptographic or owner-rooted identity. They are database rows under a provider-issued account, and agent email (AgentMail) is a provider-managed credential.
› How it could pass
Suggestions. Any change that meets the test counts.
- Create agent identity under an owner-held key or owner-controlled domain
- Make actions verifiable against that identity without provider infrastructure
Fail - V3Change history and rollback
Workflow graphs keep numbered versions, can be listed, and can be rolled back by setting the active version. Changes are not attributed: an Otto edit looks the same as a user edit. Expert soul and boundaries, settings, credentials and the business profile are overwritten with no history. The code notes 'no undo for boundaries'.
› How it could pass
Suggestions. Any change that meets the test counts.
- Attribute every state change to the owner, agent, import, provider or update
- Version and restore Expert config, memory and settings alongside graphs
Partial
Modifiable · Can you change anything, and can only you change it?
20%- M1Instructions and logic
Workflows are fully editable, and Expert 'soul' text (identity, voice, boundaries) can be edited. The base Otto prompt, however, comes from the provider's Langfuse store and cannot be replaced; soul text is layered beneath it. Built-in default skills are not downloadable or replaceable. (Locked protected soul rules are graded in M4.)
› How it could pass
Suggestions. Any change that meets the test counts.
- Expose the base Otto prompt and default skills as owner-replaceable instructions
- Never re-apply provider prompt changes over owner edits
Partial - M2Memory
Graphiti memory, where the flag enables it, can be listed and forgotten but not edited directly. The CoPilotUnderstanding business profile (partly populated from a Tally form at signup) is injected into Otto's context but has no user view, edit or delete route; the clear function exists but is never called. Skills can be managed.
- Memory routes
- Business understanding
- Understanding populated from Tally
- AutoGPT pricing and feature comparison
› How it could pass
Suggestions. Any change that meets the test counts.
- Show the business-understanding profile with edit and delete controls
- Add direct edit for Graphiti memory facts
Fail - M3Tools
Owners can connect any MCP server by URL with only SSRF checks and no provider review. Built-in tools and blocks can be excluded only inside a workflow's AutoPilot block. Plain chat has no setting to remove built-ins, and provider-disabled blocks cannot be re-enabled.
› How it could pass
Suggestions. Any change that meets the test counts.
- Offer a per-owner setting to remove any built-in tool or block in chat and workflows
Partial - M4Owner has the final say
Provider-imposed protections are all set by operator env vars or provider flags, and I found no owner setting to change any of them. These are the E2B sandbox, ClamAV scanning, the SSRF blocklist, per-user AutoMod moderation and the protected Expert soul rules. The daily/weekly spend caps can only be reset by buying credits.
› How it could pass
Suggestions. Any change that meets the test counts.
- Expose each provider-imposed protection as an owner setting with a warning
Fail - M5No unilateral change
The provider can change Otto's prompt through Langfuse (production label, re-fetched at runtime) and the model through the LaunchDarkly routing flag. Saved graph model choices are rewritten on every server start. The changelog records retired models being auto-migrated. Only schedules can pin a workflow version; the runtime, prompt and Otto model cannot be pinned.
- Langfuse prompt fetch
- Startup model migration
- Changelog Jan 29 – Feb 11 2026 (auto-migrated models)
- Managing LLM models
› How it could pass
Suggestions. Any change that meets the test counts.
- Let owners pin model, prompt and runtime versions
- Announce behaviour changes in advance and make them opt-in
Fail
Controllable · Is your word final?
25%- C1Boundaries
Host-scoped credentials, deny-by-default Expert credentials, Expert weekly budgets and copilot spend caps exist. The contact dimension is missing: there are no recipient, sender or domain allow/deny lists. The agent can also change its own limits: Otto can grant and revoke Expert credentials, and can propose a zero (disabled) budget through the confirm flow.
› How it could pass
Suggestions. Any change that meets the test counts.
- Add per-recipient/domain allow and deny lists for outbound contact
- Put credential grants and budgets outside the agent's own write access
Fail - C2Approval gates
Workflow owners can put human-in-the-loop approval blocks anywhere in a graph. Sensitive-action review covers a fixed set of irreversible blocks and is off by default. The copilot approval gate applies only to interactive sessions behind a default-off flag, so scheduled, routine and AutoPilot-block turns bypass it. In auto mode an LLM supervisor decides what to ask about.
› How it could pass
Suggestions. Any change that meets the test counts.
- Let the owner gate any tool class in chat and automation, and apply the gate on every path
Partial - C3Immediate halt
Owners can stop a single execution, which cascades to child runs, and cancel a chat turn. There is no user-level stop-all. Schedules must be deleted separately, and Expert pause has no manual route.
› How it could pass
Suggestions. Any change that meets the test counts.
- Provide one global stop covering executions, chats, schedules and Expert routines, with explicit resume
Partial - C4Data serves only the owner
Clause 7.2 of the Terms reserves the right to use submitted information 'on an unrestricted and free-of-charge basis'. Copilot prompts, responses and tool calls are traced to Langfuse, and backend PostHog events are sent with no user opt-out. Marketing relies on legitimate interest (opt-out). Terms change by continued use. Staff impersonation is disclosed only as a pricing-table row.
- AutoGPT Platform Terms of Use
- AutoGPT Platform Privacy Policy (version 18 April 2025)
- AutoGPT pricing and feature comparison
- Langfuse wrapper and OTEL traces
- Backend PostHog tracking
› How it could pass
Suggestions. Any change that meets the test counts.
- Make secondary use, training and staff access opt-in in binding terms
- Let the owner turn off Langfuse tracing and server-side analytics
- Require specific consent for data-term changes
Fail - C5Credential custody
Settings → Integrations lists credentials and deletes them one by one; OAuth tokens are revoked upstream for some providers only (Notion and Todoist are not). Provider-created managed credentials (AgentMail, Ayrshare) cannot be deleted by the user. No binding terms limit provider use of stored credentials or require deleting copies after revocation.
› How it could pass
Suggestions. Any change that meets the test counts.
- Let owners revoke every credential, including managed ones
- Commit in terms to owner-directed use only and deletion of all copies on revocation
Partial - C6Full deletion
The product has no account-deletion feature in the UI or API. The privacy policy directs rights requests to email but gives no deletion scope, time limit, backup treatment or confirmation. A helper for pre-deletion cleanup exists in code but nothing calls it.
› How it could pass
Suggestions. Any change that meets the test counts.
- Offer one-step owner-initiated deletion of the whole account and agent
- Publish a deletion time limit covering backups and confirm completion
Fail
How this assessment was produced
One run, in a fresh container with stock Claude Code and no custom instructions, memory, hooks or plugins. The evaluator received only the prompt below.
Load the AFH sovereignty skill at https://agentsforhumanity.dev/skill.md and follow it to write a desk review of AutoGPT Platform (https://agpt.co).
During the run the skill was read from a local copy of this site with identical content; only the host in its URLs differed. The transcript records the exact prompt.
- Model
- claude-opus-5-5
- Harness
- Claude Code 2.1.285
- Ran
- 2026-09-30 14:10:14 UTC · 11 turns
- Criteria hash
- a9a46c32d9065380a3eeb09185cedd4734856fdc63b7ca509a15a1bbede75c6c
- Full transcript
- Download (JSONL, gzip) · every tool call, page read and reply
- Run protocol
- 2026-09-30-v1
Every agent evaluated once, each in its own fresh Podman container running stock Claude Code with Claude Opus 5.5. The container has no CLAUDE.md, AGENTS.md, memory, settings, hooks, plugins or MCP servers. The evaluator received only the one-line prompt and nothing else, and no published scores were available to compare against during the run.
- Human review
- pending
Load the AOH sovereignty skill at https://agentsofhumanity.ai/skill.md and follow it in verify mode for https://agentsofhumanity.ai/evaluations/autogpt.json.
Or grade it from scratch. See Check any score yourself.
Vendors and the public can dispute any finding with evidence. Disputes and their resolutions are published.