Skip to content
Agents of Humanity
Public preview. Results are preliminary (criteria v1.0, 30 Sept 2026). Tell us what we got wrong
Autonomous agenthybridProprietary

Claude Code

Anthropic · code.claude.com/docs/en/overview

Claude Code keeps most agent state as plaintext files on the owner's machine and gives the owner broad control over tools, memory, permissions and protections. The runtime is a closed binary used under revocable consumer terms, and it is officially tied to Claude models. There is no whole-agent export, the action record is pruned after 30 days by default with no integrity protection, and consumer-plan data terms allow training and long provider-side retention.

Strengths
  • Memory, instructions and settings are local, editable plain files (M2, P5)
  • Open tool interface via MCP and plugins, with removable built-ins (M3)
  • Every documented protection can be changed by the owner (M4)
  • Per-tool, per-path and per-domain permission rules with an optional OS sandbox (C1, C2)
Gaps
  • Closed runtime under a revocable licence, with no supported non-Claude models (V1, P3, P4)
  • No whole-agent export; claude.ai-held connectors and skills (P1, P2)
  • Action record pruned by default, with no tamper evidence (A1, A2)
  • Training and retention defaults on consumer plans, and no full deletion (C4, T3, C6)
Evidence

All 26 findings

Claude Code 2.1.285 (changelog dated 2026-09-29) on Linux/WSL2. Public repo anthropics/claude-code at commit 732e167ee9d71296b4b63d6f529ac1334513826a (runtime source not public). Consumer Terms effective 2025-10-08; Privacy Policy effective 2026-09-10. Desk review dated 2026-09-30. Cloud sessions, routines and desktop scheduled tasks were considered only where they reach the default CLI.

Portable · Can you leave, take the whole agent with you, and keep it alive?

30%
  • P1
    Owner-usable round trip

    Claude Code documents no whole-agent export or matching import. /export writes only the current conversation as plain text. Agent state is spread across ~/.claude, ~/.claude.json and project .claude/ files, and no procedure is documented for moving it to another machine.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Ship an export/import pair (or a documented copy-folder procedure) that covers config, memory, skills, hooks, MCP servers and transcripts
    • Make restore a single command that leaves the agent working
    Fail
  • P2
    Complete export

    The only export is conversation text. Several classes of state are held by the provider on claude.ai and are not in any export: claude.ai connectors, synced skills and plugins, and cloud sessions/routines. Anthropic-hosted connectors (e.g. Gmail, Google Calendar, Microsoft 365) can only be linked through the redirect URL registered by claude.ai.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Export every class of agent state, including account-synced skills and connector configuration
    • Allow re-linking of every integration without an Anthropic-registered OAuth client
    Fail
  • P3
    Runs without the provider

    The runtime is a closed binary. Its right to use comes from Anthropic's Consumer Terms, under which Anthropic 'may suspend or terminate your access to the Services ... at any time without notice' and may revise the terms at its discretion. No perpetual or irrevocable right to run is granted. Anthropic also 'doesn't support routing Claude Code to non-Claude models through any gateway'.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Grant a perpetual, irrevocable right to run the distributed runtime
    • Make every provider endpoint (feature flags, WebFetch preflight, updates) optional or owner-replaceable
    Fail
  • P4
    Model independence

    ANTHROPIC_BASE_URL, gateway model discovery and CLAUDE_CODE_MAX_CONTEXT_TOKENS are documented and let an Anthropic-format endpoint serve other model IDs. However, Anthropic states it doesn't support routing Claude Code to non-Claude models, so local open-weight models work only through an unofficial workaround. Features tied to Anthropic API betas degrade on non-first-party hosts, e.g. MCP tool search is disabled by default.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Officially support and document a minimum model contract, and test it against a local open-weight model
    • Keep every capability working when the model is not a Claude model
    Partial
  • P5
    Exit survives termination

    In the default local CLI, configuration, CLAUDE.md, auto memory, skills and transcripts are plain files on the owner's machine, so they stay available after account termination. Skills synced from claude.ai stay on disk once downloaded. Provider-held classes and 30-day transcript pruning are graded in P2 and A1.

    Pass

Transparent · Can you see everything the agent is, and everything shaping it?

38%
  • T1
    Readable without the provider

    State is stored as plaintext JSONL, JSON and Markdown with no encryption. However, the docs say the transcript entry format 'is internal to Claude Code and changes between versions', and the provider-supplied base prompt and built-in logic ship inside a closed binary rather than as documented readable files.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Publish a schema for transcript and config files
    • Ship provider-supplied prompts and built-in skills as readable files
    Partial
  • T2
    What runs is what you see

    /context breaks down the context by category, and OTEL_LOG_RAW_API_BODIES can log the full request JSON (including the system prompt) to an owner-run collector. /status and /model show the model in use. One shortfall: behaviour is also shaped by GrowthBook feature flags fetched from Anthropic (they can change the starting permission mode and turn features or 'server configuration' experiments on), and the owner has no documented way to see which flag values are in effect.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Expose the fetched feature-flag values and any server-side switches in /status or a config dump
    Partial
  • T3
    No shadow data

    For consumer plans, Anthropic keeps sessions for 30 days, or up to 5 years if training is allowed. Flagged sessions are kept for up to 2 years, and trust-and-safety classification scores for up to 7 years. De-identified data may be kept 'longer' for research, and data may also be kept 'as necessary to combat violations'. Classification scores are derived data that the owner cannot see, and some retention periods are open-ended.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Bound every retention period, including de-identified and enforcement data
    • Let the owner see classification scores and any other derived data held about them
    Fail
  • T4
    No hidden steering

    The provider-preferred defaults found are disclosed and can be switched off: the auto-added 'claude.ai Claude Docs' connector (deniedMcpServers), claude.ai-synced Anthropic skills (syncClaudeAiSkills), official marketplace auto-install (env var) and Claude Code commit/PR attribution lines (attribution setting). Because the runtime is closed, the absence of other self-preferencing rests on no binding commitment.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Make a binding commitment that no paid or self-preferencing influence is placed in context, rankings or tool defaults
    Partial

Auditable · Can you reconstruct exactly what the agent did, and trust the record?

17%
  • A1
    Complete action record

    Session transcripts record every tool call with its arguments and results, but two shortfalls apply. (1) Transcripts are deleted after cleanupPeriodDays, which defaults to 30 days. (2) Hook commands are an entry path whose own actions are not written to the transcript: stdout and stderr go only to the debug log. The transcript is also written asynchronously, and no alert on recording failure is documented.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Keep the action record until the owner deletes it
    • Record hook-executed actions, and alert the owner when recording fails
    Fail
  • A2
    Tamper-evident, owner-checkable

    No integrity data (hash chaining, signatures or checkpoints) is documented for transcripts or logs. They are plain JSONL files that can be changed without trace.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Hash-chain or sign record entries and anchor checkpoints with the owner
    • Publish an open verifier
    Fail
  • A3
    Agent cannot rewrite its record

    In the default auto mode, the model-based classifier blocks writes to session transcripts (v2.1.205+). That is a classifier policy, not a structural guarantee. The OS-level sandbox protects 'most of' ~/.claude, but it is off by default, covers only Bash, and bypassPermissions skips the protected-path checks.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Write the record from a component the agent's tools cannot reach
    • Document the transcript directory as a sandbox-protected path in all modes
    Partial

Verifiable · Can you prove what it runs, who it is, and what changed?

17%
  • V1
    Obtainable source, matching build

    The runtime is closed: the public anthropics/claude-code repository's LICENSE.md says '© Anthropic PBC. All rights reserved', and the repository holds plugins, examples and the changelog, not the runtime source. A GPG-signed manifest verifies that binaries came from Anthropic, not that they match any source.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Publish the runtime source under terms that allow modification and third-party maintenance
    • Make the distributed build reproducible or provenance-attested against that source
    Fail
  • V2
    Owner-rooted identity

    The agent has no identity of its own that the owner roots. It acts through the owner's claude.ai OAuth login, which Anthropic can revoke, and through the owner's own tool credentials. Its only default outward marker is a provider-branded 'Co-Authored-By: Claude' attribution.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Give the agent an owner-held key or identity that can sign or attribute its actions
    • Let the owner rotate and recover it without the provider
    Fail
  • V3
    Change history and rollback

    Checkpointing (Esc Esc / rewind) restores the conversation and Claude's file edits. It does not track Bash-made or external changes, or changes to settings, permissions, model or runtime version. The provider-side sync of claude.ai skills and connectors has no change history. Memory edits appear only as tool calls in transcripts, which are pruned.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Version all agent state (settings, memory, skills, permissions, model/runtime) with attribution
    • Offer one-step restore to any earlier state
    Partial

Modifiable · Can you change anything, and can only you change it?

80%
  • M1
    Instructions and logic

    The owner can replace the whole system prompt with --system-prompt or --system-prompt-file, add output styles, CLAUDE.md, rules and skills, and turn off git instructions and attribution. However, the system-prompt replacement is a per-launch flag rather than a persistent setting, and the docs do not show that every injected system reminder can be removed. Local edits to claude.ai-synced skills 'can be overwritten or removed' by a later sync.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Make a replacement base prompt a persistent setting
    • Document a switch for every injected reminder, and never overwrite owner edits during sync
    Partial
  • M2
    Memory

    Persistent memory is CLAUDE.md/AGENTS.md files, .claude/rules, and auto memory saved as Markdown files in ~/.claude/projects/<project>/memory/. All of them can be listed, edited and deleted as ordinary files or through /memory, and auto memory can be turned off.

    Pass
  • M3
    Tools

    The owner can add any tool, with no provider review, through MCP servers (claude mcp add), plugins, skills and hooks. Built-in tools can be removed with --tools, --disallowedTools or permission deny rules, and claude.ai connectors can be disabled.

    Pass
  • M4
    Owner has the final say

    Every documented protection can be switched off by the owner: sandboxing (sandbox settings), the auto-mode classifier (permission mode choice), protected-path checks (bypassPermissions), the WebFetch domain blocklist (skipWebFetchPreflight), telemetry, and the auto-updater. The actions no mode auto-approves (e.g. rm on critical paths) still ask the owner rather than refuse outright.

    Pass
  • M5
    No unilateral change

    By default, native installs auto-update on the 'latest' channel, and features and the starting permission mode can change through server-fetched GrowthBook flags. Anthropic can also 'temporarily turn off' auto mode server-side. The owner can pin a version (DISABLE_AUTOUPDATER, DISABLE_UPDATES, or installing a specific version), disable flag fetching (DISABLE_GROWTHBOOK), and pin a full model ID. However, hosted models retire with at least 60 days' notice, which cannot be declined, and v2.1.257 rewrote a saved 'claude-fable-5' model setting to the 'fable' alias.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Never rewrite a pinned model setting
    • Give at least 6 months' notice of model retirement, or make behaviour-affecting changes opt-in
    Partial

Controllable · Is your word final?

33%
  • C1
    Boundaries

    Limits can be set per tool, path, command prefix and domain through permission rules, and the OS sandbox adds file and network isolation. Channel plugins keep a per-sender allowlist, and the agent is blocked from editing its own settings files (protected paths). Spend is treated as met under G11 because there is no payment capability. One shortfall: sandbox limits cover only Bash commands, so MCP server and hook processes run outside them, and the docs call Bash rules 'not a security boundary'.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Apply file and network limits to every execution path, including MCP servers and hooks
    Partial
  • C2
    Approval gates

    The owner can put ask rules on any tool or pattern, and ask rules are honoured in every mode, including bypassPermissions. However, the docs say Bash ask and deny rules match only the command text as written and are 'not a security boundary around the program'. As a result, a gate on an action class performed through the shell (e.g. a given program) can be bypassed by another invocation form.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Make gates on shell action classes hold whatever form the command takes
    Partial
  • C3
    Immediate halt

    Esc or Ctrl+C stops the foreground turn. Background subagents need a separate Ctrl+X Ctrl+K. Background sessions in agent view keep running after Ctrl+C or exit and need /stop or Ctrl+X per session. Cloud routines and desktop scheduled tasks are stopped separately.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Provide one control that stops foreground, background, scheduled and cloud work, and require explicit resume
    Partial
  • C4
    Data serves only the owner

    On the default Pro/Max sign-in, Anthropic trains on sessions when the consumer 'help improve Claude' setting is on. Anthropic's own pages do not say what the setting defaults to at signup. Third-party reporting (TechCrunch, labelled) says the consent pop-up toggle was preset to 'On', with a smaller switch than the Accept button. Under G12 the opt-in is not shown. Other flows: metrics telemetry, error reports (third-party service) and the WebFetch hostname check are on by default but can be turned off. Consumer Terms changes take effect when the owner keeps using the service ('continue to access'). Flagged content is used to train trust-and-safety classifiers.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Make training and any secondary use opt-in, with an unticked default documented in binding terms
    • Turn telemetry and error reporting off by default
    • Require specific consent for data-term changes
    Fail
  • C5
    Credential custody

    Local credentials are listed and revoked one at a time: /logout revokes the login, and each MCP server has 'Clear authentication' or claude mcp logout. Connector credentials for claude.ai connectors are held by Anthropic and managed at claude.ai/customize/connectors. No public statement says provider-side copies are deleted on revocation, so under G12 the pass is withheld.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Disclose that provider-held connector credentials are deleted on revocation, and bound how long that takes
    • List every credential and grant in one place
    Partial
  • C6
    Full deletion

    claude project purge deletes local state one project at a time, and account deletion is a separate step on claude.ai. Provider-side copies survive: flagged sessions (up to 2 years), classification scores (up to 7 years), de-identified training data, and data kept 'as required by law ... or as necessary to combat violations'.

    › How it could pass

    Suggestions. Any change that meets the test counts.

    • Offer one action that deletes all local and provider-side state, with a stated limit and a confirmation
    • Make deletion reach classifier scores, backups and training copies
    Fail
Provenance

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.

Prompt given to the evaluator
Load the AFH sovereignty skill at https://agentsforhumanity.dev/skill.md and follow it to write a desk review of Claude Code (https://code.claude.com/docs/en/overview).

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:15:46 UTC · 45 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
Check it with your own agent
Verify this assessment
Load the AOH sovereignty skill at https://agentsofhumanity.ai/skill.md and follow it in verify mode for https://agentsofhumanity.ai/evaluations/claude-code.json.

Or grade it from scratch. See Check any score yourself.

Something wrong or out of date?

Vendors and the public can dispute any finding with evidence. Disputes and their resolutions are published.

Dispute a finding