Counted 22 October 2026
Which open-source projects have an AI contribution policy
Borehole reads each project's contributing guide, pull-request template and agent instructions for a statement about AI-generated contributions, and its commit history for commits that declare an AI agent as co-author. Of the 404 public projects in its library, 132 state a policy and 280 have AI-declared commits. 101 do both. The counts move as the library grows.
Policy and practice
| Projects | |
|---|---|
| State a policy and have AI-declared commits | 101 |
| State a policy, no AI-declared commits | 31 |
| AI-declared commits, no stated policy | 179 |
| Neither | 93 |
No AI-declared commits does not mean no AI was used. It means no commit says so: a declaration is a co-author line the contributor chose to keep, and a rebase can remove it.
Where projects write their policy
| File | Projects |
|---|---|
| Contributing guide | 55 |
| Pull-request template | 42 |
| Agent instructions file | 21 |
| Elsewhere | 8 |
| AI policy file | 6 |
The agents commits declare
Among projects that declare any, the median share of commits carrying an AI declaration is under 1%.
| Agent | Projects |
|---|---|
| Claude | 254 |
| GitHub Copilot | 186 |
| Cursor | 84 |
| CodeRabbit | 31 |
| Codex | 18 |
| Devin | 17 |
| Amp | 10 |
| Jules | 8 |
Projects with AI-declared commits, by year
| Year | Projects |
|---|---|
| 2024 | 17 |
| 2025 | 147 |
| 2026 | 271 |
A year counts where a project's history has enough commits that year to say.
Every project with a stated policy
| Project | Where | AI-declared commits |
|---|---|---|
| n8n-io/n8n | Contributing guide | 12% |
| yt-dlp/yt-dlp | Pull-request template | None declared |
| ohmyzsh/ohmyzsh | Pull-request template | under 1% |
| open-webui/open-webui | Pull-request template | under 1% |
| microsoft/powertoys | Agent instructions file | 4.5% |
| godotengine/godot | Pull-request template | 0.0% |
| immich-app/immich | Contributing guide | under 1% |
| tauri-apps/tauri | Contributing guide | None declared |
| denoland/deno | Contributing guide | 2.5% |
| neovim/neovim | Agent instructions file | under 1% |
| localsend/localsend | Agent instructions file | None declared |
| django/django | Pull-request template | None declared |
| astral-sh/uv | Contributing guide | 1.4% |
| gohugoio/hugo | Contributing guide | under 1% |
| syncthing/syncthing | Contributing guide | None declared |
| vitejs/vite | Pull-request template | under 1% |
| lobehub/lobehub | Pull-request template | 14% |
| jesseduffield/lazygit | Contributing guide | 5.7% |
| obsproject/obs-studio | Contributing guide | None declared |
| ocornut/imgui | Pull-request template | None declared |
| caddyserver/caddy | Contributing guide | under 1% |
| apache/superset | Elsewhere | 8.0% |
| burntsushi/ripgrep | AI policy file | None declared |
| alacritty/alacritty | Contributing guide | None declared |
| traefik/traefik | Agent instructions file | under 1% |
| coollabsio/coolify | Pull-request template | 4.5% |
| ultralytics/ultralytics | Agent instructions file | under 1% |
| ghostty-org/ghostty | AI policy file | under 1% |
| pocketbase/pocketbase | Contributing guide | None declared |
| penpot/penpot | Agent instructions file | under 1% |
| starship/starship | Pull-request template | under 1% |
| rclone/rclone | Pull-request template | under 1% |
| meilisearch/meilisearch | Contributing guide | under 1% |
| go-gitea/gitea | Agent instructions file | 1.5% |
| textualize/rich | Pull-request template | under 1% |
| psf/requests | AI policy file | under 1% |
| etcd-io/etcd | Pull-request template | under 1% |
| dbeaver/dbeaver | Agent instructions file | under 1% |
| mastodon/mastodon | Contributing guide | under 1% |
| astral-sh/ruff | Pull-request template | under 1% |
| hashicorp/terraform | Contributing guide | under 1% |
| reactivex/rxjava | Pull-request template | under 1% |
| moment/moment | Contributing guide | None declared |
| square/okhttp | Contributing guide | None declared |
| iina/iina | Contributing guide | under 1% |
| paperless-ngx/paperless-ngx | Pull-request template | under 1% |
| streamlit/streamlit | Contributing guide | 5.2% |
| payloadcms/payload | Contributing guide | under 1% |
| juanfont/headscale | AI policy file | under 1% |
| curl/curl | Pull-request template | None declared |
| sxyazi/yazi | Pull-request template | under 1% |
| alamofire/alamofire | Pull-request template | None declared |
| duckdb/duckdb | AI policy file | under 1% |
| vim/vim | Pull-request template | 1.1% |
| outline/outline | Elsewhere | 6.1% |
| photoprism/photoprism | Contributing guide | under 1% |
| teamnewpipe/newpipe | Contributing guide | None declared |
| directus/directus | Agent instructions file | under 1% |
| searxng/searxng | Pull-request template | None declared |
| keycloak/keycloak | Contributing guide | under 1% |
| zellij-org/zellij | Contributing guide | under 1% |
| qdrant/qdrant | Contributing guide | 6.6% |
| certbot/certbot | Pull-request template | under 1% |
| honojs/hono | Contributing guide | under 1% |
| atuinsh/atuin | Contributing guide | 1.3% |
| avaloniaui/avalonia | Contributing guide | under 1% |
| anuken/mindustry | Contributing guide | under 1% |
| keepassxreboot/keepassxc | Contributing guide | under 1% |
| pydantic/pydantic | Contributing guide | under 1% |
| mlflow/mlflow | Elsewhere | 23% |
| postgrest/postgrest | Contributing guide | None declared |
| vapor/vapor | Agent instructions file | under 1% |
| zulip/zulip | Pull-request template | 1.5% |
| iv-org/invidious | Pull-request template | under 1% |
| firefly-iii/firefly-iii | Pull-request template | under 1% |
| argoproj/argo-cd | Elsewhere | under 1% |
| prefecthq/prefect | Pull-request template | 9.0% |
| netbox-community/netbox | Contributing guide | under 1% |
| nats-io/nats-server | Pull-request template | under 1% |
| wagtail/wagtail | Contributing guide | under 1% |
| linkwarden/linkwarden | Pull-request template | under 1% |
| lichess-org/lila | Pull-request template | under 1% |
| koel/koel | Agent instructions file | under 1% |
| coder/coder | Pull-request template | under 1% |
| sonarr/sonarr | Agent instructions file | None declared |
| go-task/task | Pull-request template | under 1% |
| freshrss/freshrss | Agent instructions file | under 1% |
| jackett/jackett | Pull-request template | under 1% |
| spree/spree | Elsewhere | 2.3% |
| getgrav/grav | Elsewhere | under 1% |
| documenso/documenso | Contributing guide | under 1% |
| grokability/snipe-it | Contributing guide | under 1% |
| ktorio/ktor | Agent instructions file | under 1% |
| thunderbird/thunderbird-android | Pull-request template | None declared |
| ory/kratos | Contributing guide | 1.5% |
| borgbackup/borg | Contributing guide | 5.8% |
| mealie-recipes/mealie | Pull-request template | under 1% |
| kludex/starlette | AI policy file | under 1% |
| sqlalchemy/sqlalchemy | Contributing guide | None declared |
| ankidroid/anki-android | Pull-request template | 3.5% |
| mrkai77/loop | Pull-request template | None declared |
| libvips/libvips | Contributing guide | None declared |
| frappe/frappe | Agent instructions file | 1.3% |
| ranchero-software/netnewswire | Contributing guide | under 1% |
| pypa/pip | Contributing guide | under 1% |
| octoprint/octoprint | Agent instructions file | None declared |
| firezone/firezone | Contributing guide | 6.2% |
| htop-dev/htop | Agent instructions file | 1.5% |
| meshtastic/firmware | Agent instructions file | 2.8% |
| antennapod/antennapod | Agent instructions file | under 1% |
| hatchet-dev/hatchet | Pull-request template | 1.8% |
| rustls/rustls | Contributing guide | None declared |
| supabase/realtime | Contributing guide | under 1% |
| kunzisoft/keepassdx | Contributing guide | None declared |
| pixelfed/pixelfed | Elsewhere | under 1% |
| nextcloud/android | Agent instructions file | under 1% |
| kanidm/kanidm | Pull-request template | None declared |
| lobsters/lobsters | Agent instructions file | None declared |
| jabref/jabref | Pull-request template | 1.6% |
| home-assistant/android | Pull-request template | under 1% |
| pretix/pretix | Contributing guide | None declared |
| element-hq/element-x-android | Contributing guide | 1.1% |
| home-assistant/ios | Pull-request template | 7.0% |
| gitlab.com/auroraoss/aurorastore | Elsewhere | under 1% |
| codeberg.org/dnkl/foot | Contributing guide | under 1% |
| codeberg.org/freeyourgadget/gadgetbridge | Contributing guide | under 1% |
| codeberg.org/river/river | Contributing guide | None declared |
| element-hq/element-x-ios | Contributing guide | under 1% |
| codeberg.org/dnkl/fuzzel | Contributing guide | None declared |
| maplibre/maplibre-compose | Pull-request template | 8.5% |
| gitlab.com/coolercontrol/coolercontrol | Contributing guide | under 1% |
| os-autoinst/openqa | Contributing guide | None declared |
Why it matters in diligence
A buyer asks who wrote the code and on what terms. A stated policy says what the project accepts; declared commits show part of what it took. Neither proves the rest, and a large gap between the two is a question for the people who run the project.
How this is counted
- Each project counts once, from its newest public reading.
- A policy counts when the project speaks about contributions in a file that governs them. A sentence addressed to the reader, or a template heading, does not count.
- A commit counts as AI-declared when it names an AI agent as co-author. Undeclared AI use is invisible here.
- A project whose history Borehole could not measure counts as not declaring.
Read a project, or your own
The library lists every project counted here. Licence changes is the other count across it.
Survey a repository: free on public repositories. Private code is read on your own machine by a collector whose source you can read first.