{
 "category": "source-control",
 "name": "Source control",
 "url": "https://agentdrives.com/categories/source-control?via=api",
 "markdown": "https://agentdrives.com/categories/source-control.md?via=api",
 "source": "https://agentdrives.com",
 "license": "CC BY 4.0",
 "products": 5,
 "driven": {
  "from": "2026-10-27",
  "to": "2026-10-29"
 },
 "coverage": {
  "driven": 5,
  "known": 8,
  "not_driven_yet": 3,
  "line": "5 of 8 source control products we know of, last drive 29 Oct 2026"
 },
 "rules": {
  "methodology": 42,
  "date": "2026-10-30",
  "changelog": "https://agentdrives.com/method/changelog?via=api"
 },
 "percent_from": 10,
 "levels": [
  {
   "level": 0,
   "name": "Read-only",
   "products": 0
  },
  {
   "level": 1,
   "name": "Needs a person",
   "products": 4
  },
  {
   "level": 2,
   "name": "Gets in",
   "products": 1
  },
  {
   "level": 3,
   "name": "Does the work",
   "products": 0
  },
  {
   "level": 4,
   "name": "Runs on its own",
   "products": 0
  },
  {
   "level": 5,
   "name": "Autonomous",
   "products": 0
  }
 ],
 "got_in_on_its_own": 1,
 "checkpoints": [
  {
   "checkpoint": "docs",
   "name": "Docs",
   "of": 5,
   "passed": 5,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 0,
   "not_reached": 0,
   "not_tried": 0,
   "passed_products": [
    "graphite",
    "bitbucket",
    "codeberg",
    "gitea",
    "github"
   ]
  },
  {
   "checkpoint": "signup",
   "name": "Sign up",
   "of": 5,
   "passed": 0,
   "percent": null,
   "person": 2,
   "stopped": 2,
   "not_needed": 1,
   "not_reached": 0,
   "not_tried": 0,
   "passed_products": []
  },
  {
   "checkpoint": "verify",
   "name": "Verify",
   "of": 5,
   "passed": 0,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 1,
   "not_reached": 4,
   "not_tried": 0,
   "passed_products": []
  },
  {
   "checkpoint": "credentials",
   "name": "Key",
   "of": 5,
   "passed": 0,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 1,
   "not_reached": 4,
   "not_tried": 0,
   "passed_products": []
  },
  {
   "checkpoint": "first_call",
   "name": "First call",
   "of": 5,
   "passed": 1,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 0,
   "not_reached": 4,
   "not_tried": 0,
   "passed_products": [
    "graphite"
   ]
  },
  {
   "checkpoint": "first_action",
   "name": "First action",
   "of": 5,
   "passed": 1,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 0,
   "not_reached": 4,
   "not_tried": 0,
   "passed_products": [
    "graphite"
   ]
  },
  {
   "checkpoint": "pay",
   "name": "Pay",
   "of": 5,
   "passed": 0,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 1,
   "not_reached": 3,
   "not_tried": 1,
   "passed_products": []
  },
  {
   "checkpoint": "cancel",
   "name": "Cancel",
   "of": 5,
   "passed": 0,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 1,
   "not_reached": 4,
   "not_tried": 0,
   "passed_products": []
  },
  {
   "checkpoint": "delete",
   "name": "Delete",
   "of": 5,
   "passed": 0,
   "percent": null,
   "person": 0,
   "stopped": 0,
   "not_needed": 1,
   "not_reached": 4,
   "not_tried": 0,
   "passed_products": []
  }
 ],
 "capabilities": {
  "mode": "shared vocabulary",
  "release": "v1",
  "columns": [
   {
    "id": "cap_p32gmnqr",
    "name": "Open and merge a pull request",
    "core_to": 5
   },
   {
    "id": "cap_gbrba2xt",
    "name": "Review a pull request",
    "core_to": 5
   },
   {
    "id": "cap_xcgt50hx",
    "name": "Create a code repository",
    "core_to": 4
   },
   {
    "id": "cap_kzejkm30",
    "name": "Create a task or issue",
    "core_to": 4
   },
   {
    "id": "cap_4wthbqyz",
    "name": "Publish a release",
    "core_to": 4
   },
   {
    "id": "cap_dzrmp5j9",
    "name": "Push commits to a repository",
    "core_to": 4
   },
   {
    "id": "cap_r6y9w5sx",
    "name": "Run a CI/CD workflow",
    "core_to": 4
   },
   {
    "id": "cap_v0b4bqdj",
    "name": "Scan code for vulnerabilities",
    "core_to": 3
   }
  ],
  "products": [
   {
    "slug": "graphite",
    "core": "1/8",
    "stopped_at": null,
    "counts": {
     "done": 1,
     "partial": 0,
     "blocked": 2,
     "untried": 0,
     "gated": 0
    },
    "cells": [
     {
      "capability": "cap_p32gmnqr",
      "state": "blocked"
     },
     {
      "capability": "cap_gbrba2xt",
      "state": "blocked"
     },
     {
      "capability": "cap_xcgt50hx",
      "state": "absent"
     },
     {
      "capability": "cap_kzejkm30",
      "state": "done"
     },
     {
      "capability": "cap_4wthbqyz",
      "state": "absent"
     },
     {
      "capability": "cap_dzrmp5j9",
      "state": "absent"
     },
     {
      "capability": "cap_r6y9w5sx",
      "state": "absent"
     },
     {
      "capability": "cap_v0b4bqdj",
      "state": "absent"
     }
    ]
   },
   {
    "slug": "bitbucket",
    "core": null,
    "stopped_at": "signup",
    "counts": {
     "done": 0,
     "partial": 0,
     "blocked": 0,
     "untried": 7,
     "gated": 0
    },
    "cells": [
     {
      "capability": "cap_p32gmnqr",
      "state": "untried"
     },
     {
      "capability": "cap_gbrba2xt",
      "state": "untried"
     },
     {
      "capability": "cap_xcgt50hx",
      "state": "untried"
     },
     {
      "capability": "cap_kzejkm30",
      "state": "absent"
     },
     {
      "capability": "cap_4wthbqyz",
      "state": "untried"
     },
     {
      "capability": "cap_dzrmp5j9",
      "state": "untried"
     },
     {
      "capability": "cap_r6y9w5sx",
      "state": "untried"
     },
     {
      "capability": "cap_v0b4bqdj",
      "state": "untried"
     }
    ]
   },
   {
    "slug": "codeberg",
    "core": null,
    "stopped_at": "signup",
    "counts": {
     "done": 0,
     "partial": 0,
     "blocked": 0,
     "untried": 7,
     "gated": 0
    },
    "cells": [
     {
      "capability": "cap_p32gmnqr",
      "state": "untried"
     },
     {
      "capability": "cap_gbrba2xt",
      "state": "untried"
     },
     {
      "capability": "cap_xcgt50hx",
      "state": "untried"
     },
     {
      "capability": "cap_kzejkm30",
      "state": "untried"
     },
     {
      "capability": "cap_4wthbqyz",
      "state": "untried"
     },
     {
      "capability": "cap_dzrmp5j9",
      "state": "untried"
     },
     {
      "capability": "cap_r6y9w5sx",
      "state": "untried"
     },
     {
      "capability": "cap_v0b4bqdj",
      "state": "absent"
     }
    ]
   },
   {
    "slug": "gitea",
    "core": null,
    "stopped_at": "signup",
    "counts": {
     "done": 0,
     "partial": 0,
     "blocked": 0,
     "untried": 8,
     "gated": 0
    },
    "cells": [
     {
      "capability": "cap_p32gmnqr",
      "state": "untried"
     },
     {
      "capability": "cap_gbrba2xt",
      "state": "untried"
     },
     {
      "capability": "cap_xcgt50hx",
      "state": "untried"
     },
     {
      "capability": "cap_kzejkm30",
      "state": "untried"
     },
     {
      "capability": "cap_4wthbqyz",
      "state": "untried"
     },
     {
      "capability": "cap_dzrmp5j9",
      "state": "untried"
     },
     {
      "capability": "cap_r6y9w5sx",
      "state": "untried"
     },
     {
      "capability": "cap_v0b4bqdj",
      "state": "untried"
     }
    ]
   },
   {
    "slug": "github",
    "core": null,
    "stopped_at": "signup",
    "counts": {
     "done": 0,
     "partial": 0,
     "blocked": 0,
     "untried": 8,
     "gated": 0
    },
    "cells": [
     {
      "capability": "cap_p32gmnqr",
      "state": "untried"
     },
     {
      "capability": "cap_gbrba2xt",
      "state": "untried"
     },
     {
      "capability": "cap_xcgt50hx",
      "state": "untried"
     },
     {
      "capability": "cap_kzejkm30",
      "state": "untried"
     },
     {
      "capability": "cap_4wthbqyz",
      "state": "untried"
     },
     {
      "capability": "cap_dzrmp5j9",
      "state": "untried"
     },
     {
      "capability": "cap_r6y9w5sx",
      "state": "untried"
     },
     {
      "capability": "cap_v0b4bqdj",
      "state": "untried"
     }
    ]
   }
  ]
 },
 "walls": [
  {
   "wall": "Cloudflare",
   "kind": "bot",
   "vendor": "cloudflare",
   "at": [
    "signup"
   ],
   "stopped": [
    "gitea"
   ],
   "let_in": []
  },
  {
   "wall": "DataDome",
   "kind": "bot",
   "vendor": "datadome",
   "at": [
    "signup"
   ],
   "stopped": [
    "github"
   ],
   "let_in": []
  },
  {
   "wall": "Google reCAPTCHA",
   "kind": "bot",
   "vendor": "recaptcha",
   "at": [
    "signup"
   ],
   "stopped": [
    "bitbucket"
   ],
   "let_in": []
  },
  {
   "wall": "Its robots.txt closes the way in",
   "kind": "robots",
   "vendor": null,
   "at": [
    "signup"
   ],
   "stopped": [
    "codeberg"
   ],
   "let_in": []
  }
 ],
 "trend": null,
 "table": [
  {
   "slug": "graphite",
   "name": "Graphite",
   "domain": "graphite.dev",
   "level": 2,
   "level_name": "Gets in",
   "gets_in_on_its_own": true,
   "stopped_at": "pay",
   "stopped_at_text": "Payment not tried",
   "wall": "Not tried: paying needs an account",
   "routes": [
    "cli"
   ],
   "core_work": "1/8",
   "driven": "2026-10-28",
   "url": "https://agentdrives.com/tools/graphite?via=api",
   "json": "https://agentdrives.com/api/tools/graphite.json?via=api"
  },
  {
   "slug": "bitbucket",
   "name": "Bitbucket",
   "domain": "bitbucket.org",
   "level": 1,
   "level_name": "Needs a person",
   "gets_in_on_its_own": false,
   "stopped_at": "signup",
   "stopped_at_text": "Sign-up",
   "wall": "Visible reCAPTCHA on the Atlassian sign-up",
   "routes": [],
   "core_work": null,
   "driven": "2026-10-27",
   "url": "https://agentdrives.com/tools/bitbucket?via=api",
   "json": "https://agentdrives.com/api/tools/bitbucket.json?via=api"
  },
  {
   "slug": "codeberg",
   "name": "Codeberg",
   "domain": "codeberg.org",
   "level": 1,
   "level_name": "Needs a person",
   "gets_in_on_its_own": false,
   "stopped_at": "signup",
   "stopped_at_text": "Sign-up",
   "wall": "robots.txt closes Codeberg to AI agents",
   "routes": [],
   "core_work": null,
   "driven": "2026-10-28",
   "url": "https://agentdrives.com/tools/codeberg?via=api",
   "json": "https://agentdrives.com/api/tools/codeberg.json?via=api"
  },
  {
   "slug": "gitea",
   "name": "Gitea",
   "domain": "gitea.com",
   "level": 1,
   "level_name": "Needs a person",
   "gets_in_on_its_own": false,
   "stopped_at": "signup",
   "stopped_at_text": "Sign-up",
   "wall": "robots.txt bars AI agents from gitea.com sign-up",
   "routes": [],
   "core_work": null,
   "driven": "2026-10-29",
   "url": "https://agentdrives.com/tools/gitea?via=api",
   "json": "https://agentdrives.com/api/tools/gitea.json?via=api"
  },
  {
   "slug": "github",
   "name": "GitHub",
   "domain": "github.com",
   "level": 1,
   "level_name": "Needs a person",
   "gets_in_on_its_own": false,
   "stopped_at": "signup",
   "stopped_at_text": "Sign-up",
   "wall": "DataDome block on the sign-up page",
   "routes": [],
   "core_work": null,
   "driven": "2026-10-27",
   "url": "https://agentdrives.com/tools/github?via=api",
   "json": "https://agentdrives.com/api/tools/github.json?via=api"
  }
 ]
}