{"id":5589,"date":"2026-04-13T04:39:00","date_gmt":"2026-04-13T11:39:00","guid":{"rendered":"https:\/\/catbradley.io\/?p=5589"},"modified":"2026-04-13T04:39:00","modified_gmt":"2026-04-13T11:39:00","slug":"ai-code-gets-approved-in-the-linux-kernel-but-with-strings-attached","status":"publish","type":"post","link":"https:\/\/catbradley.io\/?p=5589","title":{"rendered":"AI Code Gets Approved in the Linux Kernel\u2026 But With Strings Attached"},"content":{"rendered":"<p>The <a href=\"https:\/\/www.kernel.org\/\">Linux<\/a> kernel project has spent quite some time navigating the use of AI tools, and the response usually has been somewhere between &#8220;<em>figure it out yourself<\/em>&#8221; and &#8220;<em>we&#8217;ll get back to you<\/em>.&#8221;<\/p>\n<p>Late last year, at the 2025 Maintainers Summit, <a href=\"https:\/\/www.linkedin.com\/in\/sasha-levin-9861662\">Sasha Levin<\/a> pushed for some documented consensus, and <a href=\"https:\/\/lwn.net\/Articles\/1049830\/\">what came out of it<\/a> was human accountability for patches being non-negotiable, purely machine-generated submissions not being welcome, and tool use being disclosed.<\/p>\n<p>He promised to put something in writing without committing to enforce it, and that work <a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/master\/Documentation\/process\/coding-assistants.rst\">has now shipped<\/a> with <a href=\"https:\/\/itsfoss.com\/news\/linux-kernel-7-0-release\/\">Linux 7.0<\/a>.<\/p>\n<h2>What is it?<\/h2>\n<figure class=\"kg-card kg-gallery-card kg-width-wide kg-card-hascaption\">\n<div class=\"kg-gallery-container\">\n<div class=\"kg-gallery-row\">\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/linux-ai-coding-assistants-policy-1.png\" width=\"1042\" height=\"793\" loading=\"lazy\" alt=\"\" \/><\/div>\n<div class=\"kg-gallery-image\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2026\/04\/linux-ai-coding-assistants-policy-2.png\" width=\"1042\" height=\"523\" loading=\"lazy\" alt=\"\" \/><\/div>\n<\/div>\n<\/div><figcaption>\n<p><i><em class=\"italic\">Linux&#8217;s <\/em><\/i><a href=\"https:\/\/docs.kernel.org\/process\/coding-assistants.html\"><i><em class=\"italic\">AI coding assistants<\/em><\/i><\/a><i><em class=\"italic\"> policy.<\/em><\/i><\/p>\n<\/figcaption><\/figure>\n<p>The new document is called <a href=\"https:\/\/docs.kernel.org\/process\/coding-assistants.html\">AI Coding Assistants<\/a> and lives in the kernel&#8217;s process docs alongside the rest of the contribution guidelines. The short version is that AI-assisted contributions still need to comply with <a href=\"https:\/\/spdx.org\/licenses\/GPL-2.0-only.html\">GPL-2.0-only<\/a>; AI agents cannot add <code>Signed-off-by<\/code> tags; and patches that had AI help should carry an &#8220;<em>Assisted-by<\/em>&#8221; tag.<\/p>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Developer_Certificate_of_Origin\">Developer Certificate of Origin<\/a> (DCO) is an important aspect that exists, so there is <strong>a human accountable for every patch<\/strong>. AI assistance does not change that hard requirement.<\/p>\n<p>Basically, the human submitter reviews everything the AI produced, confirms it meets licensing requirements, and puts their own name on it with an appropriate mention that AI was used.<\/p>\n<p>The <em>Assisted-by<\/em> tag format is <code>Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]<\/code>; for scenarios where either single or multiple tools were used. The document gives <code>Assisted-by: Claude:claude-3-opus coccinelle sparse<\/code> as an example.<\/p>\n<p>Back then, <strong>Linus was not even convinced a dedicated tag was necessary<\/strong> and suggested the changelog body would do the job. But now, the kernel community seems to have settled on the tag anyway.<\/p>\n<h2>It&#8217;s already in use<\/h2>\n<p>We covered this <a href=\"https:\/\/itsfoss.com\/news\/linux-kernel-ai-fuzzing\/\">earlier in the week<\/a>, but Greg Kroah-Hartman (GKH) seems to have had AI-assisted fuzzing running in his kernel tree for a while now, in a branch called &#8220;<em>clanker<\/em>.&#8221; He started with the ksmbd and SMB code, found some potential issues, and submitted fixes with a note telling reviewers to verify everything independently before trusting any of it.<\/p>\n<p><strong>That is just about the workflow the new policy was written around<\/strong>. AI surfaces issues, a human with decades of kernel experience decides what is real, writes the fix, and takes responsibility. GKH being the one doing it is not a surprise given he is the stable kernel maintainer and has probably dealt with more bad patches than the others.<\/p>\n<p>Other projects have gone in a different direction. Gentoo <a href=\"https:\/\/itsfoss.com\/news\/gentoo-linux-bans-ai-code\/\">banned AI-generated contributions entirely<\/a> in 2024, with its council citing copyright risk, code quality, and ethical concerns.<\/p>\n<p>NetBSD&#8217;s <a href=\"https:\/\/www.netbsd.org\/developers\/commit-guidelines.html\">commit guidelines<\/a> put LLM-generated code in the &#8220;<em>tainted code<\/em>&#8221; category, requiring written approval from the core developers before any of it goes in.<\/p>\n<p>In contrast, <strong>Linux is not banning anything<\/strong>. Whether that turns out to be the sensible call or just a lenient one will depend on how seriously people actually take the &#8220;<em>a human reviewed this<\/em>&#8221; part.<\/p>\n<hr \/>\n<p><strong>Suggested Read \ud83d\udcd6:<\/strong> <a href=\"https:\/\/itsfoss.com\/news\/linux-kernel-ai-fuzzing\/\" rel=\"noreferrer\"><em>Is a Clanker Being Used in Linux Development?<\/em><\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/feed.itsfoss.com\/link\/24361\/17318332.gif\" height=\"1\" width=\"1\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>The Linux kernel project has spent quite some time navigating the use of AI tools, and the response usually has been somewhere between &#8220;figure it out yourself&#8221; and &#8220;we&#8217;ll get&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5589","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rss"],"_links":{"self":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/5589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5589"}],"version-history":[{"count":0,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/5589\/revisions"}],"wp:attachment":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}