FAANGineering - BlogFlock2026-02-18T00:11:43.287ZBlogFlockEngineering at Meta, Nextdoor Engineering - Medium, The GitHub Blog, Netflix TechBlog - Medium, Google Developers Blog, Etsy Engineering | Code as CraftGet ready for Google I/O 2026 - Google Developers Bloghttps://developers.googleblog.com/get-ready-for-google-io-2026/2026-02-17T20:39:58.000ZGoogle I/O returns May 19-20. Watch the livestreams for updates on Android, AI, Chrome, and Cloud. Registration is open on the Google I/O website.Securing the AI software supply chain: Security results across 67 open source projects - The GitHub Bloghttps://github.blog/?p=938312026-02-17T19:00:00.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Modern software is built on open source projects. In fact, you can trace almost any production system today, including AI, mobile, cloud, and embedded workloads, back to open source components. These components are the invisible infrastructure of software: the download that always works, the library you never question, the build step you haven’t thought about in years, if ever.</p>
<p>A few examples:</p>
<ul class="wp-block-list">
<li><strong>curl</strong> moves data for billions of systems, from package managers to CI pipelines.</li>
<li><strong>Python</strong>, <strong>pandas</strong>, and <strong>SciPy</strong> sit underneath everything from LLM research to ETL workflows and model evaluation.</li>
<li><strong>Node.js</strong>, <strong>LLVM</strong>, and <strong>Jenkins</strong> shape how software is compiled, tested, and shipped across industries.</li>
</ul>
<p>When these projects are secure, teams can adopt automation, AI‑enhanced tooling, and faster release cycles without adding risk or slow down development. When they aren’t, the blast radius crosses project boundaries, propagating through registries, clouds, transitive dependencies, and production systems, including AI systems, that react far faster than traditional workflows.</p>
<p>Securing this layer is not only about preventing incidents; it’s about giving developers confidence that the systems they depend on—whether for model training, CI/CD, or core runtime behavior—are operating on hardened, trustworthy foundations. Open source is shared industrial infrastructure that deserves real investment and measurable outcomes.</p>
<p><strong>That is the mission of the </strong><a href="https://github.com/open-source/github-secure-open-source-fund"><strong>GitHub Secure Open Source Fund</strong></a><strong>: to secure open source projects that underpin the digital supply chain, catalyze innovation, and are critical to the modern AI stack. </strong></p>
<p><strong>We do this by directly linking funding to verified security outcomes</strong> and by giving maintainers resources, hands‑on security training, and a security community where they can raise their highest‑risk concerns and get expert feedback. </p>
<h2 class="wp-block-heading" id="h-why-securing-critical-open-source-projects-matters-nbsp">Why securing critical open source projects matters </h2>
<p>A single production service can depend on hundreds or even thousands of transitive dependencies. <a href="https://github.blog/open-source/inside-the-breach-that-broke-the-internet-the-untold-story-of-log4shell/">As Log4Shell demonstrated</a>, when one widely used project is compromised, the impact is rarely confined to a single application or company.</p>
<p><strong>Investing in the security of widely used open source projects does three things at once:</strong></p>
<ul class="wp-block-list">
<li>It reinforces that security is a baseline requirement for modern software, not optional labor.</li>
<li>It gives maintainers time, resources, and support to perform proactive security work.</li>
<li>It reduces systemic risk across the global software supply chain.</li>
</ul>
<p>This security work benefits everyone who writes, ships, or operates code, even if they never interact directly with the projects involved. That gap is exactly what the GitHub Secure Open Source Fund was built to close. <a href="https://github.blog/open-source/maintainers/securing-the-supply-chain-at-scale-starting-with-71-important-open-source-projects/" target="_blank" rel="noreferrer noopener">In Session 1 & 2, 71 projects made significant security improvements</a>. In Session 3, 67 open source projects delivered concrete security improvements to reduce systemic risk across the software supply chain.</p>
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--1" style="border-top-width:4px">
<h2 class="wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5" id="h-how-the-github-secure-open-source-fund-works" style="margin-top:0">How the GitHub Secure Open Source Fund works</h2>
<p>Each session is a three-week sprint and engagement for a total of 12 months. Funding and participation are tied directly to outcome‑driven goals and verified security improvements.</p>
<p>The sprint is designed and curated by the <a href="https://securitylab.github.com/"><strong>GitHub Security Lab</strong></a><strong>, </strong>and delivered by security experts from GitHub and our partners. The training is structured into different focus areas per week. </p>
<p>These include: </p>
<ul class="wp-block-list">
<li>Foundations of open source security</li>
<li>Threat modeling and secure coding</li>
<li>AI security and vulnerability management</li>
</ul>
<p>Throughout this program, each project receives $10,000 USD via <a href="https://github.com/sponsors">GitHub Sponsors</a> (which breaks down to $6,000 USD during the sprint and $2,000 USD at 6- and 12-month security check-ins). Projects are invited to a new security-focused community and office hours with the <a href="https://securitylab.github.com/">GitHub Security Lab</a>, which they can take advantage of during the full 12 months. They also receive security resources to immediately implement in their project and <a href="https://azure.microsoft.com/en-us">Azure</a> credits for cloud infrastructure.</p>
<p><a href="https://resources.github.com/github-secure-open-source-fund/">Learn more ></a></p>
</aside>
<hr class="wp-block-separator has-alpha-channel-opacity">
<h2 class="wp-block-heading" id="session-3-by-the-numbers">Session 3, by the numbers</h2>
<ul class="wp-block-list">
<li><strong>67</strong> projects</li>
<li><strong>98</strong> maintainers</li>
<li><strong>$670,000</strong> in non-dilutive funding powered by <a href="https://github.com/open-source/sponsors">GitHub Sponsors</a></li>
<li><strong>99%</strong> of projects completed the program with core GitHub security features enabled</li>
</ul>
<p><strong>Real security results across all sessions:</strong></p>
<ul class="wp-block-list">
<li><strong>138</strong> projects</li>
<li><strong>219</strong> maintainers</li>
<li><strong>38</strong> countries represented by participating projects</li>
<li><strong>$1.38M</strong> in non-dilutive funding powered by <a href="https://github.com/open-source/sponsors">GitHub Sponsors</a></li>
<li><strong>191</strong> new <a href="https://github.blog/security/supply-chain-security/securing-the-open-source-supply-chain-the-essential-role-of-cves/">CVEs</a> Issued</li>
<li><strong>250+</strong> new secrets prevented from being leaked</li>
<li><strong>600+</strong> leaked secrets were detected and resolved</li>
<li><strong>Billions</strong> of monthly downloads powered by alumni projects</li>
</ul>
<p><strong>Plus, in just the last 6 months</strong>:</p>
<ul class="wp-block-list">
<li><strong>500+</strong> <a href="https://docs.github.com/en/code-security/concepts/code-scanning/codeql/about-code-scanning-with-codeql">CodeQL</a> alerts fixed</li>
<li><strong>66</strong> secrets blocked</li>
</ul>
<hr class="wp-block-separator has-alpha-channel-opacity">
<h2 class="wp-block-heading" id="where-security-work-happened-in-session-3">Where security work happened in Session 3</h2>
<p>Session 3 focused on improving security across the systems developers rely on every day. The projects below are grouped by the role they play in the software ecosystem.</p>
<h2 class="wp-block-heading" id="core-programming-languages-and-runtimes-%f0%9f%a4%96">Core programming languages and runtimes 🤖</h2>
<p><em><a href="https://github.com/python/cpython">CPython</a> <em>• <a href="https://github.com/himmelblau-idm/himmelblau">Himmelblau</a></em></em> <em>• <em><a href="https://github.com/llvm/llvm-project">LLVM</a> •</em></em> <em><a href="https://github.com/nodejs/web-team">Node.js</a> • <a href="https://github.com/rustls/rustls">Rustls</a> <em>•</em></em> <em><a href="https://github.com/vapor/vapor">Vapor</a></em></p>
<p>These projects define how software is written and executed. Improvements here flow downstream to entire ecosystems.</p>
<p>This group includes CPython, Node.js, LLVM, Rustls, and related tooling that shapes compilation, execution, and cryptography at scale.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/node.jpg?resize=1024%2C538" alt="Quote from Node: GitHub SOSF trailblazed critical security knowledge for Open Source in the AI era." class="wp-image-93835" srcset="https://github.blog/wp-content/uploads/2026/02/node.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/node.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/node.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/node.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/node.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/node.jpg?w=2048 2048w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>
<p>For example, improvements to CPython directly benefit millions of developers who rely on Python for application development, automation, and AI workloads. LLVM maintainers identified security improvements that complement existing investments and reduce risk across toolchains used throughout the industry.</p>
<p>When language runtimes improve their security posture, everything built on top of them inherits that resilience.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/python.jpg?resize=1024%2C538" alt="Python quote: This program made it possible to enhance Python's security, directly benefitting millions of developers." class="wp-image-93836" srcset="https://github.blog/wp-content/uploads/2026/02/python.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/python.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/python.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/python.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/python.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/python.jpg?w=2048 2048w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="web-networking-and-core-infrastructure-libraries-%f0%9f%93%9a">Web, networking, and core infrastructure libraries 📚</h2>
<p><span><a style="font-style: italic;" href="https://github.com/apache/apisix">Apache APISIX</a><i>• </i><a style="font-style: italic;" href="https://github.com/curl">curl</a><em style="font-style: italic;">• <a href="https://github.com/evcc-io/evcc">evcc</a> </em><i>• </i><a style="font-style: italic;" href="https://github.com/kgateway-dev/kgateway">kgateway</a><i>• </i><a style="font-style: italic;" href="https://github.com/netty/netty">Netty</a><i>• </i><a style="font-style: italic;" href="https://github.com/quic-go/quic-go">quic-go</a></span><em>• <a href="https://github.com/urllib3/urllib3">urllib3</a></em></p>
<p>These projects form the connective tissue of the internet. They handle HTTP, TLS, APIs, and network communication that nearly every application depends on.</p>
<p>This group includes curl, urllib3, Netty, Apache APISIX, quic-go, and related libraries that sit on the hot path of modern software.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/curl.jpg?resize=1024%2C538" alt="Quote from curl: The program brings together security best practices in a concise, actionable form to give us assurance we're on the right track." class="wp-image-93837" srcset="https://github.blog/wp-content/uploads/2026/02/curl.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/curl.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/curl.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/curl.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/curl.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/curl.jpg?w=2048 2048w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="build-systems-ci-cd-and-release-tooling-%f0%9f%a7%b0">Build systems, CI/CD, and release tooling 🧰</h2>
<p><em><a href="https://github.com/apache/airflow/">Apache Airflow</a> • <a href="https://github.com/babel/babel">Babel</a> <i>•</i> <a href="https://github.com/foundry-rs/foundry">Foundry</a> • <a href="https://github.com/GitoxideLabs/gitoxide">Gitoxide</a> • <a href="https://github.com/goreleaser/goreleaser">GoReleaser</a> • <a href="https://github.com/jenkinsci/jenkins">Jenkins</a> • <a href="https://github.com/jupyter/docker-stacks">Jupyter Docker Stacks</a> <i>•</i> <a href="https://github.com/isaacs/node-lru-cache">node-lru-cache</a> • <a href="https://github.com/oapi-codegen/oapi-codegen/">oapi-codegen</a> <i>•</i> <a href="https://github.com/pypi/warehouse">PyPI / Warehouse</a> • <a href="https://github.com/isaacs/rimraf">rimraf</a> • <a href="https://github.com/webpack/webpack">webpack</a></em></p>
<p>Compromising build tooling compromises the entire supply chain. These projects influence how software is built, tested, packaged, and shipped.</p>
<p>Session 3 included projects such as Jenkins, Apache Airflow, GoReleaser, PyPI Warehouse, webpack, and related automation and release infrastructure.</p>
<p>Maintainers in this category focused on securing workflows that often run with elevated privileges and broad access. Improvements here help prevent tampering before software ever reaches users.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/webpack.jpg?resize=1024%2C538" alt="Quote from Webpack: We've greatly enhanced our security to protect web applications against threats." class="wp-image-93850" srcset="https://github.blog/wp-content/uploads/2026/02/webpack.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/webpack.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/webpack.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/webpack.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/webpack.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/webpack.jpg?w=2048 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="data-science-scientific-computing-and-ai-foundations-%f0%9f%93%8a">Data science, scientific computing, and AI foundations 📊</h2>
<p><em><a href="https://github.com/aipotheosis-labs/aci">ACI.dev</a> • <a href="https://github.com/arviz-devs/arviz">ArviZ</a> • <a href="https://github.com/cocoindex-io/cocoindex">CocoIndex</a> • <a href="https://github.com/OpenBB-finance/OpenBB">OpenBB Platform</a> • <a href="https://github.com/open-metadata/OpenMetadata">OpenMetadata</a> <i>•</i> <a href="https://github.com/opensearch-project/OpenSearch/">OpenSearch</a> • <a href="https://github.com/pandas-dev/pandas">pandas</a> • <a href="https://github.com/pymc-devs/pymc">PyMC</a> • <a href="https://github.com/scipy/scipy">SciPy</a> • <a href="https://github.com/traceroot-ai/traceroot">TraceRoot</a></em></p>
<p>These projects sit at the core of modern data analysis, research, and AI development. They are increasingly embedded in production systems as well as research pipelines.</p>
<p>Projects such as pandas, SciPy, PyMC, ArviZ, and OpenSearch participated in Session 3. Maintainers expanded security coverage across large and complex codebases, often moving from limited scanning to continuous checks on every commit and release.</p>
<p>Many of these projects also engaged deeply with AI-related security topics, reflecting their growing role in AI workflows.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/scipy.jpg?resize=1024%2C538" alt="Quote from SciPy: The program took us from 0 to security scans on every line of code, on every commit, and on every release." class="wp-image-93851" srcset="https://github.blog/wp-content/uploads/2026/02/scipy.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/scipy.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/scipy.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/scipy.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/scipy.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/scipy.jpg?w=2048 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="developer-tools-and-productivity-utilities-%e2%9a%92%ef%b8%8f">Developer tools and productivity utilities ⚒️</h2>
<p><em><a href="https://github.com/assertj">AssertJ</a> <i>•</i> <a href="https://github.com/ArduPilot/ardupilot">ArduPilot</a> <i>•</i> <a href="https://github.com/asyncapi">AsyncAPI Initiative</a> <i>•</i> </em><a style="font-style: italic;" href="https://github.com/bevyengine/bevy">Bevy</a><i> • </i><a style="font-style: italic;" href="https://github.com/kovidgoyal/calibre">calibre</a><i> • </i><a style="font-style: italic;" href="https://github.com/egovernments/DIGIT-Core">DIGIT</a><i> • </i><a style="font-style: italic;" href="https://github.com/fabricjs/fabric.js">fabric.js</a><i> • </i><a style="font-style: italic;" href="https://github.com/ImageMagick/ImageMagick">ImageMagick</a><i> • </i><a style="font-style: italic;" href="https://github.com/jquery/jquery">jQuery</a><i> • </i><a style="font-style: italic;" href="https://github.com/jhy/jsoup">jsoup</a><i> • </i><a style="font-style: italic;" href="https://calendly.com/url?q=https%3A%2F%2Fgithub.com%2Fmastodon%2Fmastodon&user_uuid=eb42a9fd-194f-445e-8b77-06fff52eef85&stage=1&hmac=3ebce412277377ef09bb3c38d5988ed6df3f03eb4939afc723454b25f7a39daf">Mastodon</a><i> • </i><a style="font-style: italic;" href="https://github.com/mermaid-js/mermaid">Mermaid</a><i> • </i><a style="font-style: italic;" href="https://github.com/mockoon/mockoon">Mockoon</a><i> • </i><a style="font-style: italic;" href="https://github.com/processing/p5.js">p5.js</a><i> • </i><a style="font-style: italic;" href="https://github.com/fabiocaccamo/python-benedict">python-benedict</a><i> • </i><a style="font-style: italic;" href="https://github.com/kriasoft/react-starter-kit">React Starter Kit</a><i> • </i><a style="font-style: italic;" href="https://github.com/SeleniumHQ/selenium">Selenium</a><i> • </i><a style="font-style: italic;" href="https://github.com/sphinx-doc/sphinx">Sphinx</a><i>• </i><a style="font-style: italic;" href="https://github.com/spyder-ide/spyder">Spyder</a><i> • </i><a style="font-style: italic;" href="https://github.com/kevinburke/ssh_config">ssh_config</a><i>• </i><a style="font-style: italic;" href="https://github.com/thunderbird/thunderbird-android/">Thunderbird for Android</a><i> • </i><a style="font-style: italic;" href="https://github.com/jonobr1/two.js">Two.js</a> • <em><a href="https://github.com/xyflow/xyflow">xyflow</a></em> • <em><a href="https://github.com/yiisoft">Yii framework</a></em></p>
<p>These projects shape the day-to-day experience of writing, testing, and maintaining software.</p>
<p>The group includes tools such as Selenium, Sphinx, ImageMagick, calibre, Spyder, and other widely used utilities that appear throughout development and testing environments.</p>
<p>Improving security here reduces the risk that developer tooling becomes an unexpected attack vector, especially in automated or shared environments.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?resize=1024%2C538" alt="Quote from Mermaid: We're not just well equipped for security; we're equipped to lift others up with the same knowledge." class="wp-image-93852" srcset="https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/mermaid.jpg?w=2048 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="identity-secrets-and-security-frameworks-%f0%9f%94%92">Identity, secrets, and security frameworks 🔒</h2>
<p><em><a href="https://github.com/external-secrets/external-secrets">external-secrets</a> • <a href="https://github.com/helmetjs/helmet">Helmet.js</a> • <a href="https://github.com/keycloak/keycloak">Keycloak</a> • <a href="https://github.com/keyshade-xyz/keyshade">Keyshade</a> • <a href="https://github.com/ruby-oauth/oauth2">Oauth2 (Ruby)</a> • <a href="https://github.com/dmno-dev/varlock">varlock</a> • <a href="https://github.com/go-webauthn/webauthn">WebAuthn (Go)</a></em></p>
<p>These projects form the backbone of authentication, authorization, secrets management, and secure configuration.</p>
<p>Session 3 participants included projects such as Keycloak, external-secrets, oauth2 libraries, WebAuthn tooling, and related security frameworks.</p>
<p>Maintainers in this group often reported shifting from reactive fixes to systematic threat modeling and long-term security planning, improving trust for every system that depends on them.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?resize=1024%2C538" alt="Quote from Keyshade: The GitHub SOSF was invaluable, helping us strengthen our security approach and making us more confident and effective organization-wide." class="wp-image-93853" srcset="https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/keyshade.jpg?w=2048 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--2" style="border-top-width:4px">
<h2 class="wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5" id="h-ai-security-as-a-shared-frontier" style="margin-top:0">AI security as a shared frontier</h2>
<p>Across all categories, one signal stood out. AI-related security modules produced the largest self-reported increase in security understanding of any topic in Session 3.</p>
<p>While AI security is not solved, it is being actively shaped by the open source community in the open.</p>
</aside>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/selenium.jpg?resize=1024%2C538" alt="" class="wp-image-93854" srcset="https://github.blog/wp-content/uploads/2026/02/selenium.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/selenium.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/selenium.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/selenium.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/selenium.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/selenium.jpg?w=2048 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="security-as-shared-infrastructure">Security as shared infrastructure</h2>
<p>One of the most durable outcomes of the program was a shift in mindset.</p>
<p>Maintainers moved security from a stretch goal to a core requirement. They shifted from reactive patching to proactive design, and from isolated work to shared practice. Many are now publishing playbooks, sharing incident response exercises, and passing lessons on to their contributor communities.</p>
<p>That is how security scales: one-to-many.</p>
<h2 class="wp-block-heading" id="h-what-s-next-help-us-make-open-source-more-secure-nbsp">What’s next: Help us make open source more secure </h2>
<p>Securing open source is basic maintenance for the internet. By giving 67 heavily used projects real funding, three focused weeks, and direct help, we watched maintainers ship fixes that now protect millions of builds a day. This training, taught by the <a href="https://securitylab.github.com/">GitHub Security Lab</a> and top cybersecurity experts, allows us to go beyond one-on-one education and enable one-to-many impact. </p>
<p>For example, many maintainers are working to make their playbooks public. The incident-response plans they rehearsed are forkable. The signed releases they now ship flow downstream to every package manager and CI pipeline that depends on them.</p>
<p><strong>Join us in this mission to secure the software supply chain at scale. </strong></p>
<ul class="wp-block-list">
<li><strong>Projects and maintainers:</strong> <a href="https://github.com/open-source/github-secure-open-source-fund">Apply now</a> to the GitHub Secure Open Source Fund and help make open source safer for everyone. Session 4 begins April 2026. If you write code, rely on open source, or want the systems you depend on to remain trustworthy, we encourage you to apply.</li>
<li><strong>Funding and Ecosystem Partners</strong>: <a href="https://forms.office.com/pages/responsepage.aspx?id=v4j5cvGGr0GRqy180BHbR72dY7PBsFZJkFTETCg9J0xUOEVXVzFKUjk1M0ZaWFVZSTdZMU85MkRPSi4u&route=shorturl">Become a Funding or Ecosystem Partner</a> and support a more secure open source future. Join us on this mission to secure the software supply chain at scale!</li>
</ul>
<h3 class="wp-block-heading" id="h-thank-you-to-all-of-our-partners">Thank you to all of our partners</h3>
<p>We couldn’t do this without our incredible network of partners. Together, we are helping secure the open source ecosystem for everyone! </p>
<p><strong>Funding Partners:</strong> Alfred P. Sloan Foundation, American Express, Chainguard, Datadog, Herodevs, Kraken, Mayfield, Microsoft, Shopify, Stripe, Superbloom, Vercel, Zerodha, 1Password</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="538" width="1024" src="https://github.blog/wp-content/uploads/2026/02/header.jpg?resize=1024%2C538" alt="A decorative image showing GitHub Secure Open Source Fund, powered by GitHub Sponsors. Logos below are: Alfred P. Sloan Foundation, American Express, chainguard, Datadog, herdevs, Kraken, Microsoft, Mayfield, Shopify, stripe, superbloom, Vercel, 1Password, Zerodha" class="wp-image-93832" srcset="https://github.blog/wp-content/uploads/2026/02/header.jpg?w=2400 2400w, https://github.blog/wp-content/uploads/2026/02/header.jpg?w=300 300w, https://github.blog/wp-content/uploads/2026/02/header.jpg?w=768 768w, https://github.blog/wp-content/uploads/2026/02/header.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/header.jpg?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/header.jpg?w=2048 2048w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<p><strong>Ecosystem Partners: </strong>Atlantic Council, Ecosyste.ms, CURIOSS, Digital Data Design Institute Lab for Innovation Science, Digital Infrastructure Insights Fund, Microsoft for Startups, Mozilla, OpenForum Europe, Open Source Collective, OpenUK, Open Technology Fund, OpenSSF, Open Source Initiative, OpenJS Foundation, University of California, OWASP, Santa Cruz OSPO, Sovereign Tech Agency, SustainOSS</p>
<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="5760" height="1844" src="https://github.blog/wp-content/uploads/2026/02/ecosystem.png?resize=5760%2C1844" alt="A collage of ecosystem partners: OWASP, ecosyste.ms, curioss, Digital Data Design Institute, Digital Infrastructure Insights Fund, Mozilla, Open Forum Europe, Open Source Collective, Open UK, Microsoft for Startups, Open SSF, Open Source Initiative, Open JS Foundation, OSPO, Open Technology Fund, URA, Sovereign Tech Agency, Sustain, and Atlantic Council." class="wp-image-93901" srcset="https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=5760 5760w, https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=300 300w, https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=768 768w, https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=1536 1536w, https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=2048 2048w, https://github.blog/wp-content/uploads/2026/02/ecosystem.png?w=3000 3000w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
</body></html>
<p>The post <a href="https://github.blog/open-source/maintainers/securing-the-ai-software-supply-chain-security-results-across-67-open-source-projects/">Securing the AI software supply chain: Security results across 67 open source projects</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
Automate repository tasks with GitHub Agentic Workflows - The GitHub Bloghttps://github.blog/?p=937302026-02-13T14:00:00.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Imagine visiting your repository in the morning and feeling calm because you see:</p>
<ul class="wp-block-list">
<li>Issues triaged and labelled</li>
<li>CI failures investigated with proposed fixes</li>
<li>Documentation has been updated to reflect recent code changes.</li>
<li>Two new pull requests that improve testing await your review.</li>
</ul>
<p>All of it visible, inspectable, and operating within the boundaries you’ve defined.</p>
<p>That’s the future powered by <a href="https://github.github.com/gh-aw/?utm_source=blog-agentic-workflows-cta&utm_medium=blog&utm_campaign=agentic-workflows-tech-preview-feb-2026" target="_blank" rel="noreferrer noopener">GitHub Agentic Workflows</a>: automated, intent-driven repository workflows that run in GitHub Actions, authored in plain Markdown and executed with coding agents. They’re designed for people working in GitHub, from individuals automating a single repo to teams operating at enterprise or open-source scale.</p>
<p>At GitHub Next, we began GitHub Agentic Workflows as an investigation into a simple question: what does repository automation with strong guardrails look like in the era of AI coding agents? A natural place to start was GitHub Actions, the heart of scalable repository automation on GitHub. By bringing automated coding agents into actions, we can enable their use across millions of repositories, while keeping decisions about when and where to use them in your hands.</p>
<p>GitHub Agentic Workflows are now available in <a href="https://github.github.com/gh-aw/?utm_source=blog-agentic-workflows-cta&utm_medium=blog&utm_campaign=agentic-workflows-tech-preview-feb-2026" target="_blank" rel="noreferrer noopener">technical preview</a>. In this post, we’ll explain what they are and how they work. We invite you to put them to the test, to explore where repository-level AI automation delivers the most value.</p>
<picture>
<source media="(min-width: 768px)" srcset="https://github.blog/wp-content/uploads/2026/02/Quotes_Option1.jpg">
<source media="(max-width: 767px)" srcset="https://github.blog/wp-content/uploads/2026/02/Quotes_Option2.jpg">
<img decoding="async" src="https://github.blog/wp-content/uploads/2026/02/Quotes_Option1.jpg" alt="Graphic showing quotes from customers. 'Home Assistant has thousands of open issues. No human can track what's trending or which problems affect the most users. I've built GitHub Agentic Workflows that analyze issues and surface what matters: that's the kind of judgment amplification that actually helps maintainers.'- Franck Nijhof, lead of the Home Assistant project, one of the top projects on GitHubby contributor countAgentic workflows also allow maintainers and community to experiment with repository automation together. 'Adopting GitHub’s Agentic Workflows has lowered the barrier for experimentation with AI tooling, making it significantly easier for staff, maintainers and newcomers alike. Inside of CNCF, we are benefiting from improved documentation automation along with improving team reporting across the organization. This isn't just a technical upgrade for our community, it’s part of a cultural shift that empowers our ecosystem to innovate faster with AI and agentic tooling.'- Chris Aniszczyk, CTO of the Cloud Native Computing Foundation (CNCF), whose mission is to make cloud native computing ubiquitous across the worldEnterprises are seeing similar benefits at scale. 'With GitHub Agentic Workflows, we’re able to expand how we apply agents to real engineering work at scale, including changes that span multiple repositories. The flexibility and built-in controls give us confidence to leverage Agentic Workflows across complex systems at Carvana.'- Alex Devkar, Senior Vice President, Engineering and Analytics, at Carvana" style="width: 100%; height: auto; display: block;">
</source></source></picture>
<h2 class="wp-block-heading" id="h-ai-repository-automation-nbsp-a-nbsp-revolution-through-simplicity-nbsp">AI repository automation: A revolution through simplicity </h2>
<p>The concept behind GitHub Agentic Workflows is straightforward: you describe the outcomes you want in plain Markdown, add this as an automated workflow to your repository, and it executes using a coding agent in GitHub Actions.</p>
<p>This brings the power of coding agents into the heart of repository automation. Agentic workflows run as standard GitHub Actions workflows, with added guardrails for sandboxing, permissions, control, and review. When they execute, they can use different coding agent engines—such as Copilot CLI, Claude Code, or OpenAI Codex—depending on your configuration.</p>
<p>The use of GitHub Agentic Workflows makes entirely new categories of repository automation and software engineering possible, in a way that fits naturally with how developer teams already work on GitHub. All of them would be difficult or impossible to accomplish traditional YAML workflows alone:</p>
<ol start="1" class="wp-block-list">
<li><strong>Continuous triage</strong>: automatically <a href="https://github.github.com/gh-aw/blog/2026-01-13-meet-the-workflows/" target="_blank" rel="noreferrer noopener">summarize, label, and route new issues</a>.</li>
<li><strong>Continuous documentation</strong>: keep <a href="https://github.github.com/gh-aw/blog/2026-01-13-meet-the-workflows-documentation/" target="_blank" rel="noreferrer noopener">READMEs and documentation aligned with code changes</a>.</li>
<li><strong>Continuous code simplification</strong>: <a href="https://github.github.com/gh-aw/blog/2026-01-13-meet-the-workflows-continuous-simplicity/" target="_blank" rel="noreferrer noopener">repeatedly identify code improvements</a> and open pull requests for them.</li>
<li><strong>Continuous test improvement</strong>: <a href="https://github.github.com/gh-aw/blog/2026-01-13-meet-the-workflows-testing-validation/" target="_blank" rel="noreferrer noopener">assess test coverage and add high-value tests</a>.</li>
<li><strong>Continuous quality hygiene</strong>: proactively <a href="https://github.github.com/gh-aw/blog/2026-01-13-meet-the-workflows-quality-hygiene/" target="_blank" rel="noreferrer noopener">investigate CI failures and propose targeted fixes</a>.</li>
<li><strong>Continuous reporting</strong>: <a href="https://github.github.com/gh-aw/blog/2026-01-13-meet-the-workflows-metrics-analytics/" target="_blank" rel="noreferrer noopener">create regular reports on repository health, activity, and trends</a>.</li>
</ol>
<p>These are just a few examples of repository automations that showcase the power of GitHub Agentic Workflows. We call this <a href="https://githubnext.com/projects/continuous-ai/">Continuous AI</a>: the integration of AI into the SDLC, enhancing automation and collaboration similar to continuous integration and continuous deployment (CI/CD) practices.</p>
<p>GitHub Agentic Workflows and Continuous AI are designed to augment existing CI/CD rather than replace it. They do not replace build, test, or release pipelines, and their use cases largely do not overlap with deterministic CI/CD workflows. Agentic workflows run on GitHub Actions because that is where GitHub provides the necessary infrastructure for permissions, logging, auditing, sandboxed execution, and rich repository context.</p>
<p>In our own usage at GitHub Next, we’re finding new uses for agentic workflows nearly every day. Throughout GitHub, teams have been using agentic workflows to create custom tools for themselves in minutes, replacing chores with intelligence or paving the way for humans to get work done by assembling the right information, in the right place, at the right time. A new world of possibilities is opening for teams and enterprises to keep their repositories healthy, navigable, and high-quality.</p>
<h2 class="wp-block-heading" id="h-let-s-nbsp-talk-guardrails-and-control-nbsp">Let’s talk guardrails and control </h2>
<p>Designing for safety and control is non-negotiable. GitHub Agentic Workflows implements a defense-in-depth security architecture that protects against unintended behaviors and prompt-injection attacks.</p>
<p>Workflows run with read-only permissions by default. Write operations require explicit approval through <a href="https://github.github.com/gh-aw/introduction/architecture/">safe outputs</a>, which map to pre-approved, reviewable GitHub operations such as creating a pull request or adding a comment to an issue. Sandboxed execution, tool allowlisting, and network isolation help ensure that coding agents operate within controlled boundaries.</p>
<p>Guardrails like these make it practical to run agents continuously, not just as one-off experiments. See our <a href="https://github.github.com/gh-aw/introduction/architecture/">security architecture</a> for more details.</p>
<p>One alternative approach to agentic repository automation is to run coding agent CLIs, such as Copilot or Claude, directly inside a standard GitHub Actions YAML workflow. This approach often grants these agents more permission than is required for a specific task. In contrast, GitHub Agentic Workflows run coding agents with read-only access by default and rely on safe outputs for GitHub operations, providing tighter constraints, clearer review points, and stronger overall control.</p>
<h2 class="wp-block-heading" id="h-a-simple-example-a-daily-repo-report-nbsp-nbsp">A simple example: A daily repo report </h2>
<p>Let’s look at an agentic workflow which creates a daily status report for repository maintainers.</p>
<p>In practice, you will usually use AI assistance to <a href="https://github.github.io/gh-aw/setup/creating-workflows/">create your workflows</a>. The easiest way to do this is with an interactive coding agent. For example, with your favorite coding agent, you can enter this prompt:</p>
<pre class="wp-block-code language-plaintext"><code>Generate a workflow that creates a daily repo status report for a maintainer. Use the instructions at https://github.com/github/gh-aw/blob/main/create.md</code></pre>
<p>The coding agent will interact with you to confirm your specific needs and intent, write the Markdown file, and check its validity. You can then review, refine, and validate the workflow before adding it to your repository.</p>
<p>This will create two files in <code>.github/workflows</code>: </p>
<ul class="wp-block-list">
<li><code>daily-repo-status.md</code> (the agentic workflow) </li>
<li><code>daily-repo-status.lock.yml</code> (the corresponding agentic workflow lock file, which is executed by GitHub Actions) </li>
</ul>
<p>The file <code>daily-repo-status.md</code> will look like this: </p>
<pre class="wp-block-code language-plaintext"><code>---
on:
schedule: daily
permissions:
contents: read
issues: read
pull-requests: read
safe-outputs:
create-issue:
title-prefix: "[repo status] "
labels: [report]
tools:
github:
---
# Daily Repo Status Report
Create a daily status report for maintainers.
Include
- Recent repository activity (issues, PRs, discussions, releases, code changes)
- Progress tracking, goal reminders and highlights
- Project status and recommendations
- Actionable next steps for maintainers
Keep it concise and link to the relevant issues/PRs.</code></pre>
<p>This file has two parts: </p>
<ol start="1" class="wp-block-list">
<li><strong>Frontmatter</strong> (YAML between <code>---</code> markers) for configuration </li>
<li><strong>Markdown instructions</strong> that describe the job in natural language in natural language</li>
</ol>
<p>The Markdown is the intent, but the trigger, permissions, tools, and allowed outputs are spelled out up front.</p>
<p>If you prefer, you can add the workflow to your repository manually: </p>
<ol start="1" class="wp-block-list">
<li><strong>Create the workflow</strong>: Add  <code>daily-repo-status.md</code> with the frontmatter and instructions.</li>
<li><strong>Create the lock file</strong>:
<ul class="wp-block-list">
<li><code>gh extension install github/gh-aw</code>  </li>
<li><code>gh aw compile</code></li>
</ul>
</li>
<li><strong>Commit and push</strong>: Commit and push files to your repository.</li>
<li><strong>Add any required secrets</strong>: For example, <a href="https://github.github.com/gh-aw/reference/engines/" target="_blank" rel="noreferrer noopener">add a token or API key for your coding agent</a>.</li>
</ol>
<p>Once you add this workflow to your repository, it will run automatically or you can trigger it manually using GitHub Actions. When the workflow runs, it creates a status report issue like this:</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" height="566" width="1024" src="https://github.blog/wp-content/uploads/2026/02/Screenshot-2.png?resize=1024%2C566" alt='Screenshot of a GitHub issue titled "Daily Repo Report - February 9, 2026" showing key highlights, including 2 new releases, 1,737 commits from 16 contributors, 100 issues closed with 190 new issues opened, 50 pull requests merged from 93 opened pull requests, and 5 code quality issues opened.' class="wp-image-93734" srcset="https://github.blog/wp-content/uploads/2026/02/Screenshot-2.png?w=1826 1826w, https://github.blog/wp-content/uploads/2026/02/Screenshot-2.png?w=300 300w, https://github.blog/wp-content/uploads/2026/02/Screenshot-2.png?w=768 768w, https://github.blog/wp-content/uploads/2026/02/Screenshot-2.png?w=1024 1024w, https://github.blog/wp-content/uploads/2026/02/Screenshot-2.png?w=1536 1536w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>
<h2 class="wp-block-heading" id="h-what-you-can-build-with-github-agentic-workflows-nbsp">What you can build with GitHub Agentic Workflows </h2>
<p>If you’re looking for further inspiration <a href="https://github.github.com/gh-aw/blog/2026-01-12-welcome-to-pelis-agent-factory/">Peli’s Agent Factory</a> is a guided tour through a wide range of workflows, with practical patterns you can adapt, remix, and standardize across repos.</p>
<p>A useful mental model: if repetitive work in a repository can be described in words, it might be a good fit for an agentic workflow.</p>
<p>If you’re looking for design patterns, check out <a href="https://github.github.com/gh-aw/patterns/chatops/" target="_blank" rel="noreferrer noopener">ChatOps</a>, <a href="https://github.github.com/gh-aw/patterns/dailyops/" target="_blank" rel="noreferrer noopener">DailyOps</a>, <a href="https://github.github.com/gh-aw/patterns/dataops/" target="_blank" rel="noreferrer noopener">DataOps</a>, <a href="https://github.github.com/gh-aw/patterns/issueops/" target="_blank" rel="noreferrer noopener">IssueOps</a>, <a href="https://github.github.com/gh-aw/patterns/projectops/" target="_blank" rel="noreferrer noopener">ProjectOps</a>, <a href="https://github.github.com/gh-aw/patterns/multirepoops/" target="_blank" rel="noreferrer noopener">MultiRepoOps,</a> and <a href="https://github.github.com/gh-aw/patterns/orchestration/" target="_blank" rel="noreferrer noopener">Orchestration</a>.</p>
<p>Uses for agent-assisted repository automation often depend on particular repos and development priorities. Your team’s approach to software development will differ from those of other teams. It pays to be imaginative about how you can use agentic automation to augment <em>your</em> team for <em>your</em> repositories for <em>your</em> goals.</p>
<h2 class="wp-block-heading" id="h-practical-guidance-for-teams-nbsp">Practical guidance for teams </h2>
<p>Agentic workflows bring a shift in thinking. They work best when you focus on goals and desired outputs rather than perfect prompts. You provide clarity on what success looks like, and allow the workflow to explore how to achieve it. Some boundaries are built into agentic workflows by default, and others are ones you explicitly define. This means the agent can explore and reason, but its conclusions always stay within safe, intentional limits.</p>
<p>You will find that your workflows can range from very general (“Improve the software”) to very specific (“Check that all technical documentation and error messages for this educational software are written in a style suitable for an audience of age 10 or above”). You can choose the level of specificity that’s appropriate for your team.</p>
<p>GitHub Agentic Workflows use coding agents at runtime, which incur billing costs. When using Copilot with default settings, each workflow run typically incurs two <a href="https://docs.github.com/en/billing/concepts/product-billing/github-copilot-premium-requests">premium requests</a>: one for the agentic work and one for a guardrail check through safe outputs. The models used can be configured to help manage these costs. Today, automated uses of Copilot are associated with a user account. For other coding agents, refer to our <a href="https://github.github.com/gh-aw/reference/engines/">documentation</a> for details. Here are a few more tips to help teams get value quickly:</p>
<ul class="wp-block-list">
<li>Start with <strong>low-risk outputs</strong> such as comments, drafts, or reports before enabling pull request creation.</li>
<li>For coding, start with <strong>goal-oriented improvements</strong> such as routine refactoring, test coverage, or code simplification rather than feature work.</li>
<li>For reports, use instructions that are <strong>specific about what “good” looks like</strong>, including format, tone, links, and when to stop.</li>
<li>Agentic workflows create an agent-only, sub-loop that’s able to be autonomous because agents are acting under defined terms. But it’s important that <strong>humans stay in the broader loop</strong> of forward progress in the repository, through reports, issues, and pull requests. With GitHub Agentic Workflows, <strong>pull requests are never merged automatically</strong>, and humans must always review and approve.</li>
<li>Treat the workflow Markdown as code. Review changes, keep it small, and evolve it intentionally.</li>
</ul>
<p>Continuous AI works best if you use it in conjunction with CI/CD. Don’t use agentic workflows as a replacement for GitHub Actions YAML workflows for CI/CD. This approach extends continuous automation to more subjective, repetitive tasks that traditional CI/CD struggle to express.</p>
<h2 class="wp-block-heading" id="h-build-the-future-nbsp-of-automation-nbsp-with-us-nbsp-nbsp-nbsp">Build the future of automation with us </h2>
<p>GitHub Agentic Workflows are available now in technical preview and are a collaboration between GitHub, Microsoft Research, and Azure Core Upstream. We invite you to try them out and help us shape the future of repository automation.</p>
<ul class="wp-block-list">
<li><a href="https://github.github.com/gh-aw/?utm_source=blog-agentic-workflows-cta&utm_medium=blog&utm_campaign=agentic-workflows-tech-preview-feb-2026" target="_blank" rel="noreferrer noopener">Documentation</a> </li>
<li><a href="https://github.github.io/gh-aw/introduction/how-they-work/" target="_blank" rel="noreferrer noopener">How they work</a> </li>
<li><a href="https://github.github.io/gh-aw/setup/quick-start/" target="_blank" rel="noreferrer noopener">Quick start guide</a> </li>
<li><a href="https://github.github.io/gh-aw/blog/2026-01-12-welcome-to-pelis-agent-factory/" target="_blank" rel="noreferrer noopener">Workflow gallery</a> </li>
</ul>
<p>We’d love for you to be involved! <a href="https://gh.io/aw-tp-community-feedback">Share your thoughts in the Community discussion</a>, or join us (and tons of other awesome makers) in the #agentic-workflows channel of the <a href="https://gh.io/next-discord">GitHub Next Discord</a>. We look forward to seeing what you build with GitHub Agentic Workflows. Happy automating!</p>
<div class="wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<p><strong>Try GitHub Agentic Workflows in a repo today</strong>! Install <code>gh-aw</code>, add a starter workflow or create one using AI, and run it. Then, <a href="https://gh.io/aw-tp-community-feedback">share what you build (and what you want next)</a>. </p>
</div>
</body></html>
<p>The post <a href="https://github.blog/ai-and-ml/automate-repository-tasks-with-github-agentic-workflows/">Automate repository tasks with GitHub Agentic Workflows </a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
Conductor Update: Introducing Automated Reviews - Google Developers Bloghttps://developers.googleblog.com/conductor-update-introducing-automated-reviews/2026-02-13T10:29:58.000ZConductor for the Gemini CLI has introduced a new Automated Review feature designed to verify the quality and accuracy of AI-generated code. This update addresses the challenge of validating agentic development by automatically checking implementations against original plans, enforcing style guides, and identifying security risks or bugs. by incorporating test-suite validation and providing actionable reports, Conductor helps developers ensure that their AI agents deliver safe, predictable, and architecturally sound code before it is finalized.Welcome to the Eternal September of open source. Here’s what we plan to do for maintainers. - The GitHub Bloghttps://github.blog/?p=937892026-02-12T20:14:11.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Open collaboration runs on trust. For a long time, that trust was protected by a natural, if imperfect filter: friction.</p>
<p>If you were on <a href="https://en.wikipedia.org/wiki/Usenet">Usenet</a> in 1993, you’ll remember that every September a flood of new university students would arrive online, unfamiliar with the norms, and the community would patiently onboard them. Then mainstream dial-up ISPs became popular and a continuous influx of new users came online. It became <a href="https://en.wikipedia.org/wiki/Eternal_September">the September that never ended</a>.</p>
<p>Today, open source is experiencing its own Eternal September. This time, it’s not just new users. It’s the sheer volume of contributions.</p>
<h2 class="wp-block-heading" id="h-when-the-cost-to-contribute-drops">When the cost to contribute drops</h2>
<p>In the era of mailing lists contributing to open source required real effort. You had to subscribe, lurk, understand the culture, format a patch correctly, and explain why it mattered. The effort didn’t guarantee quality, but it filtered for engagement. Most contributions came from someone who had genuinely engaged with the project.</p>
<p>It also excluded people. The barrier to entry was high. Many projects worked hard to lower it in order to make open source more welcoming.</p>
<p>A major shift came with the pull request. Hosting projects on GitHub, using pull requests, and labeling “Good First Issues” reduced the friction needed to contribute. Communities grew and contributions became more accessible.</p>
<p>That was a good thing.</p>
<p>But friction is a balancing act. Too much keeps people and their ideas out, too little friction can strain the trust open source depends on.</p>
<p>Today, a pull request can be generated in seconds. Generative AI makes it easy for people to produce code, issues, or security reports at scale. The cost to create has dropped but the cost to review has not.</p>
<p>It’s worth saying: most contributors are acting in good faith. Many want to help projects they care about. Others are motivated by learning, visibility, or the career benefits of contributing to widely used open source. Those incentives aren’t new and they aren’t wrong.</p>
<p>The challenge is what happens when low-quality contributions arrive at scale. When volume accelerates faster than review capacity, even well-intentioned submissions can overwhelm maintainers. And when that happens, trust, the foundation of open collaboration, starts to strain.</p>
<h2 class="wp-block-heading" id="h-the-new-scale-of-noise">The new scale of noise</h2>
<p>It is tempting to frame “low-quality contributions” or “AI slop” contributions as a unique recent phenomenon. It isn’t. Maintainers have always dealt with noisy inbound.</p>
<ul class="wp-block-list">
<li>The Linux kernel operates under a “<a href="https://lwn.net/Articles/798230/">web of trust</a>” philosophy and formalized its <a href="https://www.kernel.org/doc/html/latest/process/submitting-patches.html">SubmittingPatches</a> guide and introduced the Developer Certificate of Origin (DCO) in 2004 for a reason.</li>
<li>Mozilla and GNOME built formal triage systems around the reality that most incoming bug reports needed filtering before maintainers invested deeper time.</li>
<li>Automated scanners: Long before GenAI, maintainers dealt with waves of automated security and code quality reports from commercial and open source scanning tools.</li>
</ul>
<p>The question from maintainers has often been the same: “<em>Are you really trying to help me, or just help yourself?</em>“</p>
<p>Just because a tool—whether a static analyzer or an LLM—makes it easy to generate a report or a fix, it doesn’t mean that contribution is valuable to the project. The ease of creation often adds a burden to the maintainer because there is an imbalance of benefit. The contributor maybe gets the credit (or the CVE, or the visibility), while the maintainer gets the maintenance burden.</p>
<p>Maintainers are feeling that directly. For example:</p>
<ul class="wp-block-list">
<li>curl <a href="https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/">ended its bug bounty program</a> after AI-generated security reports exploded, each taking hours to validate.</li>
<li>Projects like Ghostty are moving to <a href="https://github.com/ghostty-org/ghostty/blob/main/CONTRIBUTING.md">invitation-only contribution models</a>, requiring discussion before accepting code contributions.</li>
<li>Multiple projects are adopting explicit rules about AI-generated contributions.</li>
</ul>
<p>These are rational responses to an imbalance.</p>
<h2 class="wp-block-heading" id="h-what-we-re-doing-at-github">What we’re doing at GitHub</h2>
<p>At GitHub, we aren’t just watching this happen. Maintainer sustainability is foundational to open source, and foundational to us. As the home of open source, we have a responsibility to help you manage what comes through the door.</p>
<p>We are approaching this from multiple angles: shipping immediate relief now, while building toward longer-term, systemic improvements. Some of this is about tooling. Some is about creating clearer signals so maintainers can decide where to spend their limited time.</p>
<h2 class="wp-block-heading" id="h-features-we-ve-already-shipped">Features we’ve already shipped</h2>
<ul class="wp-block-list">
<li><strong><a href="https://github.blog/changelog/2026-02-05-pinned-comments-on-github-issues/">Pinned comments on issues</a></strong>: You can now pin a comment to the top of an issue from the comment menu.</li>
<li><strong><a href="https://github.blog/changelog/2026-02-05-pinned-comments-on-github-issues/">Banners to reduce comment noise</a></strong>: Experience fewer unnecessary notifications with a banner that encourages people to react or subscribe instead of leaving noise like “+1” or “same here.”</li>
<li><strong><a href="https://github.blog/changelog/2026-02-05-improved-pull-request-files-changed-february-5-updates/">Pull request performance improvements</a></strong>: Pull request diffs have been optimized for greater responsiveness and large pull requests in the new files changed experience respond up to 67% faster.</li>
<li><strong>Faster issue navigation</strong>: Easier bug triage thanks to significantly improved speeds when browsing and navigating issues as a maintainer.</li>
<li><strong><a href="https://docs.github.com/en/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository">Temporary interaction limits</a></strong>: You can temporarily enforce a period of limited activity for certain users on a public repository.</li>
</ul>
<p>These improvements focus on reducing review overhead.</p>
<h2 class="wp-block-heading" id="h-features-we-ll-be-shipping-soon">Features we’ll be shipping soon</h2>
<ul class="wp-block-list">
<li><strong>Repo-level pull request controls</strong>: Gives maintainers the option to limit pull request creation to collaborators or disable pull requests entirely. While the introduction of the pull request was fundamental to the growth of open source, maintainers should have the tools they need to manage their projects.</li>
<li><strong>Pull request deletion from the UI</strong>: Remove spam or abusive pull requests so repositories can stay more manageable.</li>
</ul>
<h2 class="wp-block-heading" id="h-exploring-next-steps">Exploring next steps</h2>
<p>We know that walls don’t build communities. As we explore next steps, our focus is on giving maintainers more control while helping protect what makes open source communities work.</p>
<p>Some of the directions we’re exploring in consultation with maintainers include:</p>
<ul class="wp-block-list">
<li><strong>Criteria-based gating</strong>: Requiring a linked issue before a pull request can be opened, or defining rules that contributions must meet before submission.</li>
<li><strong>Improved triage tools</strong>: Potentially leveraging <a href="https://github.github.com/gh-aw/">automated triage</a> to evaluate contributions against a project’s own guidelines (like <code>CONTRIBUTING.md</code>) and surface which pull requests should get your attention first.</li>
</ul>
<p>These tools are meant to support decision-making, not replace it. Maintainers should always remain in control.</p>
<p>We are also aware of tradeoffs. Restrictions can disproportionately affect first-time contributors acting in good faith. That’s why these controls are optional and configurable.</p>
<h2 class="wp-block-heading" id="h-the-community-is-building-ladders">The community is building ladders</h2>
<p>One of the things I love most about open source is that when the community hits a wall, people build ladders. We’re seeing a lot of that right now.</p>
<p>Maintainers across the ecosystem are experimenting with different approaches. Some projects have moved to invitation-only workflows. Others are building custom GitHub Actions for contributor triage and reputation scoring.</p>
<p>Mitchell Hashimoto’s <a href="https://github.com/mitchellh/vouch">Vouch</a> project is an interesting example. It implements an explicit trust management system where contributors must be vouched for by trusted maintainers before they can participate. It’s experimental and some aspects will be debated, but it fits a longer lineage, from Advogato’s trust metric to Drupal’s credit system to the Linux kernel’s <code>Signed-off-by</code> chain.</p>
<p>At the same time, many communities are investing heavily in education and onboarding to widen who can contribute while setting clearer expectations. The Python community, for example, emphasizes contributor guides, mentorship, and clearly labeled entry points. Kubernetes pairs strong governance with extensive documentation and contributor education, helping new contributors understand not just how to contribute, but what a useful contribution looks like.</p>
<p>These approaches aren’t mutually exclusive. Education helps good-faith contributors succeed. Guardrails help maintainers manage scale.</p>
<p>There is no single correct solution. That’s why we are excited to see maintainers building tools that match their project’s specific values. The tools communities build around the platform often become the proving ground for what might eventually become features. So we’re paying close attention.</p>
<h2 class="wp-block-heading" id="h-building-community-not-just-walls">Building community, not just walls</h2>
<p>We also need to talk about incentives. If we only build blocks and bans, we create a fortress, not a bazaar.</p>
<p>Right now, the concept of “contribution” on GitHub still leans heavily toward code authorship. In WordPress, they use manually written “props” credit given not just for code, but for writing, reproduction steps, user testing, and community support. It recognizes the many forms of contribution that move a project forward.</p>
<p>We want to explore how GitHub can better surface and celebrate those contributions. Someone who has consistently triaged issues or merged documentation PRs has proven they understand your project’s voice. These are trust signals we should be surfacing to help you make decisions faster.</p>
<h2 class="wp-block-heading" id="h-tell-us-what-you-need">Tell us what you need</h2>
<p>We’ve opened a community discussion to gather feedback on the directions we’re exploring: <a href="https://github.com/orgs/community/discussions/185387">Exploring Solutions to Tackle Low-Quality Contributions on GitHub</a>.</p>
<p>We want to hear from you. Share what is working for your projects, where the gaps are, and what would meaningfully improve your experience maintaining open source.</p>
<p>Open source’s Eternal September is a sign of something worth celebrating: more people want to participate than ever before. The volume of contributions is only going to grow — and that’s a good thing. But just as the early internet evolved its norms and tools to sustain community at scale, open source needs to do the same. Not by raising the drawbridge, but by giving maintainers better signals, better tools, and better ways to channel all that energy into work that moves their projects forward.</p>
<p>Let’s build that together.</p>
</body></html>
<p>The post <a href="https://github.blog/open-source/maintainers/welcome-to-the-eternal-september-of-open-source-heres-what-we-plan-to-do-for-maintainers/">Welcome to the Eternal September of open source. Here’s what we plan to do for maintainers.</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
GitHub availability report: January 2026 - The GitHub Bloghttps://github.blog/?p=937802026-02-11T23:12:34.000Z
<p>In January, we experienced two incidents that resulted in degraded performance across GitHub services.</p>
<p><strong>January 13 09:38 UTC (lasting 46 minutes)</strong></p>
<p>On January 13, 2026, from 09:25 to 10:11 UTC, GitHub Copilot experienced a service outage with error rates averaging 18% and peaking at 100%. This impacted chat features across Copilot Chat, VS Code, JetBrains IDEs, and other dependent products. The incident was triggered by a configuration error introduced during a model update and was initially mitigated by rolling back the change. A secondary recovery phase extended until 10:46 UTC due to upstream provider Open AI experiencing degraded availability for GPT‑4.1 model.</p>
<p>We have completed a detailed root‑cause review and are implementing stronger monitors, improved test environments, and tighter configuration safeguards to prevent recurrence and accelerate detection and mitigation of future issues.</p>
<p><strong>January 15 16:56 UTC (lasting 1 hour and 40 minutes)</strong></p>
<p>On January 15, 2026, between 16:40 UTC and 18:20 UTC, we observed increased latency and timeouts across issues, pull requests, notifications, actions, repositories, API, account login, and an internal service, Alive, that powers live updates on GitHub. An average 1.8% of combined web and API requests saw failure, peaking briefly at 10% early on. The majority of impact was observed for unauthenticated users, but authenticated users were impacted as well.</p>
<p>This was caused by an infrastructure update to some of our data stores. Upgrading this infrastructure to a new major version resulted in unexpected resource contention, leading to distributed impact in the form of slow queries and increased timeouts across services that depend on these datasets. We mitigated this by rolling back to the previous stable version.</p>
<p>We are working to improve our validation process for these types of upgrades to catch issues that only occur under high load before full release, improve detection time, and reduce mitigation times in the future.</p>
<p><strong>Looking ahead</strong> </p>
<p>Please note that the incidents that occurred on February 9, 2026, will be included in next month’s February Availability Report. In the meantime, you can refer to <a href="https://www.githubstatus.com/incidents/lcw3tg2f6zsd" target="_blank" rel="noreferrer noopener">incident report</a> on the GitHub Status site for more details.</p>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<p>Follow our <a href="https://www.githubstatus.com/">status page</a> for real-time updates on status changes and post-incident recaps. To learn more about what we’re working on, check out the engineering section on the <a href="https://github.blog/category/engineering/">GitHub Blog</a>.</p>
<p>The post <a href="https://github.blog/news-insights/company-news/github-availability-report-january-2026/">GitHub availability report: January 2026</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
The Death of Traditional Testing: Agentic Development Broke a 50-Year-Old Field, JiTTesting Can Revive It - Engineering at Metahttps://engineering.fb.com/?p=236502026-02-11T17:00:05.000Z<h2><span style="font-weight: 400;">WHAT IT IS</span></h2>
<p><span style="font-weight: 400;">The rise of agentic software development means code is being written, reviewed, and shipped faster than ever before across the entire industry. It also means that testing frameworks need to evolve for this rapidly changing landscape. Faster development demands faster testing that can catch bugs as they land in a codebase, without requiring regular updates and maintenance.</span></p>
<p><span style="font-weight: 400;">Just-in‑Time Tests (JiTTests)</span> <span style="font-weight: 400;">are a fundamentally novel approach to testing where tests are automatically generated by large language models (LLMs) on the fly to catch bugs – even ones that traditional testing might not catch – just-in-time before the code lands into production.</span></p>
<p><a href="https://arxiv.org/pdf/2601.22832" target="_blank" rel="noopener"><span style="font-weight: 400;">A Catching JiTTest</span></a><span style="font-weight: 400;"> focuses specifically on finding regressions introduced by a code change. </span><span style="font-weight: 400;">This type of testing reimagines </span><a href="https://arxiv.org/abs/2109.04086"><span style="font-weight: 400;">decades</span></a><span style="font-weight: 400;"> of </span><a href="https://web.eecs.umich.edu/~weimerw/2022-481F/readings/mutation-testing.pdf" target="_blank" rel="noopener"><span style="font-weight: 400;">software testing theory and practice</span></a><span style="font-weight: 400;">. While traditional testing relies on static test suites, manual authoring, and ongoing maintenance, Catching JiTTests require no test maintenance and no test code review, meaning engineers can focus their expertise on real bugs, not false positives. Catching JiTTests use sophisticated techniques to maximize test signal value and minimize false positive drag, targeting test signals where they matter most: on serious failures.</span></p>
<h2><span style="font-weight: 400;">HOW TESTING TRADITIONALLY WORKS</span></h2>
<p><span style="font-weight: 400;">Under the traditional paradigm, tests are manually built as new code lands in a codebase and continually executed, requiring regular updates and maintenance. The engineers building these tests face the challenge of needing to check the behavior, not only of the current code, but all possible future changes. Inherent uncertainty about future changes results in tests that don’t catch anything, or when they do, it’s a false positive. Agentic development dramatically increases the pace of code change, straining test development burden and scaling the cost of false positives and test maintenance to breaking point. </span></p>
<h2><span style="font-weight: 400;">HOW CATCHING JITTESTS WORK</span></h2>
<p><span style="font-weight: 400;">Broadly, JiTTests are bespoke tests, tailored to a specific code change, that give engineers simple, actionable feedback about unexpected behavior changes without the need to read or write test code. LLMs can generate JiTTests automatically the moment a pull request is submitted. And since the JiTTest itself is LLM-generated, it can often infer the plausible intention of a code change and simulate possible faults that may result from it.</span></p>
<p><span style="font-weight: 400;">With an understanding of intent, Catching JiTTests can significantly drive down instances of false positives.</span></p>
<p><span style="font-weight: 400;">Here are the key steps of the Catching JiTTest process:</span></p>
<ol>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">New code lands in the codebase.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The system infers the intention of the code change.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">It creates</span> <a href="https://engineering.fb.com/2025/02/05/security/revolutionizing-software-testing-llm-powered-bug-catchers-meta-ach/" target="_blank" rel="noopener"><span style="font-weight: 400;">mutants</span></a><span style="font-weight: 400;"> (code versions with faults deliberately inserted) to simulate what could go wrong.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">It generates and runs tests to catch those faults.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Ensembles of rule-based and LLM-based assessors focus the signal on true positive failures.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Engineers receive clear, relevant reports about unexpected changes right when it matters most.</span></li>
</ol>
<h2><span style="font-weight: 400;">WHY IT MATTERS</span></h2>
<p><span style="font-weight: 400;">Catching JiTTests are designed for the world of AI-powered agentic software development and accelerate testing by focusing on serious unexpected bugs. With them engineers no longer have to spend time writing, reviewing, and testing complex test code. Catching JiTTests, by design, kill many of the issues with traditional testing in one stroke:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">They are generated on-the-fly for each code change and do not reside in the codebase, eliminating ongoing maintenance costs and shifting effort from humans to machines.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">They are tailored to each change, making them more robust and less prone to breaking due to intended updates.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">They automatically adapt as the code changes.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">They only require human review when a bug is actually caught.</span></li>
</ul>
<p><span style="font-weight: 400;">This all amounts to an important shift in testing infrastructure where the focus moves from generic code quality to whether a test actually finds faults in a specific change without raising a false positive. It helps improve testing overall while also allowing it to keep up with the pace of agentic coding.</span></p>
<h2><span style="font-weight: 400;">READ THE PAPER</span></h2>
<p><a href="https://arxiv.org/pdf/2601.22832"><span style="font-weight: 400;">Just-in-Time Catching Test Generation at Meta</span></a></p>
<p>The post <a rel="nofollow" href="https://engineering.fb.com/2026/02/11/developer-tools/the-death-of-traditional-testing-agentic-development-jit-testing-revival/">The Death of Traditional Testing: Agentic Development Broke a 50-Year-Old Field, JiTTesting Can Revive It</a> appeared first on <a rel="nofollow" href="https://engineering.fb.com">Engineering at Meta</a>.</p>
Making Gemini CLI extensions easier to use - Google Developers Bloghttps://developers.googleblog.com/making-gemini-cli-extensions-easier-to-use/2026-02-11T10:15:02.000ZTo simplify the user experience and prevent startup failures, the Gemini CLI has introduced structured extension settings that eliminate the need for manual environment variable configuration. This update enables extensions to automatically prompt users for required details during installation and securely stores sensitive information, such as API keys, directly in the system keychain. Users can now easily manage and override these configurations globally or per project using the new Gemini extensions config command.Access public data insights faster: Data Commons MCP is now hosted on Google Cloud - Google Developers Bloghttps://developers.googleblog.com/access-public-data-insights-faster-data-commons-mcp-is-now-hosted-on-google-cloud/2026-02-09T17:05:01.000ZData Commons has launched a free, hosted Model Context Protocol (MCP) service on Google Cloud Platform, eliminating the need for users to manage complex local server installations. This update simplifies connecting AI agents and the Gemini CLI to Data Commons, allowing Google to handle security, updates, and resource management while users query data natively.Building Prometheus: How Backend Aggregation Enables Gigawatt-Scale AI Clusters - Engineering at Metahttps://engineering.fb.com/?p=236112026-02-09T17:00:33.000Z<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">We’re sharing details of the role backend aggregation (BAG) plays in building Meta’s gigawatt-scale AI clusters like <a href="https://engineering.fb.com/2025/09/29/data-infrastructure/metas-infrastructure-evolution-and-the-advent-of-ai/" target="_blank" rel="noopener">Prometheus</a>.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">BAG allows us to seamlessly connect thousands of GPUs across multiple data centers and regions.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Our BAG implementation is connecting two different network fabrics –</span><a href="https://engineering.fb.com/2025/10/20/data-center-engineering/disaggregated-scheduled-fabric-scaling-metas-ai-journey/" target="_blank" rel="noopener"> <span style="font-weight: 400;">Disaggregated Schedule Fabric (DSF)</span></a><span style="font-weight: 400;"> and</span><a href="https://engineering.fb.com/2025/10/13/data-infrastructure/ocp-summit-2025-the-open-future-of-networking-hardware-for-ai/#nsf" target="_blank" rel="noopener"> <span style="font-weight: 400;">Non-Scheduled Fabric (NSF)</span></a><span style="font-weight: 400;">.</span></li>
</ul>
<p><span style="font-weight: 400;">Once it’s complete our AI cluster,</span><a href="https://www.threads.com/@zuck/post/DMF6uUgx9f9/video-were-actually-building-several-multi-gw-clusters-were-calling-the-first-one-prom?hl=en"> <span style="font-weight: 400;">Prometheus</span></a><span style="font-weight: 400;">, will deliver 1-gigawatt of capacity to enhance and enable new and existing AI experiences across Meta products. Prometheus’ infrastructure will span several data center buildings in a single larger region, interconnecting tens of thousands of GPUs.</span></p>
<p><span style="font-weight: 400;">A key piece of scaling and connecting this infrastructure is backend aggregation (BAG), which we use to seamlessly connect GPUs and data centers with robust, high-capacity networking. By leveraging modular hardware, advanced routing, and resilient topologies, BAG ensures both performance and reliability at unprecedented scale</span></p>
<p><span style="font-weight: 400;">As our AI clusters continue to grow, we expect BAG to play an important role in meeting future demands and driving innovation across Meta’s global network.</span></p>
<h2><span style="font-weight: 400;">What Is Backend Aggregation?</span></h2>
<p><span style="font-weight: 400;">BAG is a centralized Ethernet-based super spine network layer that primarily functions to interconnect multiple spine layer fabrics across various data centers and regions within large clusters. Within Prometheus, for example, the BAG layer serves as the aggregation point between regional networks and Meta’s backbone, enabling the creation of mega AI clusters. BAG is designed to support immense bandwidth needs, with inter-BAG capacities reaching the petabit range (e.g., 16-48 Pbps per region pair).</span></p>
<figure id="attachment_23636" aria-describedby="caption-attachment-23636" style="width: 1999px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" class="size-full wp-image-23636" src="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png" alt="" width="1999" height="970" srcset="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png 1999w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png?resize=916,444 916w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png?resize=768,373 768w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png?resize=1024,497 1024w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png?resize=1536,745 1536w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png?resize=96,47 96w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-1.png?resize=192,93 192w" sizes="(max-width: 992px) 100vw, 62vw" /><figcaption id="caption-attachment-23636" class="wp-caption-text">We use backend aggregation (BAG) to interconnect data center regions to share compute and other resources into large clusters.</figcaption></figure>
<h2><span style="font-weight: 400;">How BAG Is Helping Us Build Gigawatt-Scale AI Clusters </span></h2>
<p><span style="font-weight: 400;">To address the challenge of interconnecting tens of thousands of GPUs, we’re deploying distributed BAG layers regionally.</span></p>
<h3><span style="font-weight: 400;">How We Interconnect BAG Layers</span></h3>
<p><span style="font-weight: 400;">BAG layers are strategically distributed across regions to serve subsets of L2 fabrics, adhering to distance, buffer, and latency constraints. Inter-BAG connectivity utilizes either a planar (direct match) or spread connection topology, chosen based on site size and fiber availability.</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Planar topology </b><span style="font-weight: 400;">connects BAG switches one-to-one between regions following the plane, offering simplified management but concentrating potential failure domains.</span></li>
<li style="font-weight: 400;" aria-level="1"><b>Spread connection topology </b><span style="font-weight: 400;">distributes links across multiple BAG switches/planes, enhancing path diversity and resilience.</span></li>
</ul>
<figure id="attachment_23638" aria-describedby="caption-attachment-23638" style="width: 1480px" class="wp-caption alignnone"><img decoding="async" class="size-full wp-image-23638" src="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png" alt="" width="1480" height="1180" srcset="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png 1480w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png?resize=916,730 916w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png?resize=768,612 768w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png?resize=1024,816 1024w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png?resize=96,77 96w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-2.png?resize=192,153 192w" sizes="(max-width: 992px) 100vw, 62vw" /><figcaption id="caption-attachment-23638" class="wp-caption-text">An example of an inter-BAG network topology.</figcaption></figure>
<h3><span style="font-weight: 400;">How a BAG Layer Connects to L2 Fabrics</span></h3>
<p><span style="font-weight: 400;">So far, we’ve discussed how the BAG layers are interconnected, now let’s see how a BAG layer connects downstream to L2 fabrics.</span></p>
<p><span style="font-weight: 400;">We’ve used two main fabric technologies,</span> <a href="https://engineering.fb.com/2025/10/20/data-center-engineering/disaggregated-scheduled-fabric-scaling-metas-ai-journey/" target="_blank" rel="noopener"><span style="font-weight: 400;">Disaggregated Schedule Fabric (DSF)</span></a><span style="font-weight: 400;"> and</span><a href="https://engineering.fb.com/2025/10/13/data-infrastructure/ocp-summit-2025-the-open-future-of-networking-hardware-for-ai/#nsf" target="_blank" rel="noopener"> <span style="font-weight: 400;">Non-Scheduled Fabric (NSF)</span></a><span style="font-weight: 400;"> to build L2 networks.</span></p>
<p><span style="font-weight: 400;">Below is an example of DSF L2 zones across five data center buildings connected to the BAG layer via a special backend edge pod in each building. </span></p>
<figure id="attachment_23637" aria-describedby="caption-attachment-23637" style="width: 1842px" class="wp-caption alignnone"><img decoding="async" class="size-full wp-image-23637" src="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png" alt="" width="1842" height="952" srcset="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png 1842w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png?resize=916,473 916w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png?resize=768,397 768w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png?resize=1024,529 1024w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png?resize=1536,794 1536w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png?resize=96,50 96w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-3.png?resize=192,99 192w" sizes="(max-width: 992px) 100vw, 62vw" /><figcaption id="caption-attachment-23637" class="wp-caption-text">A BAG inter-building connection for DSF fabric across five data centers.</figcaption></figure>
<p><span style="font-weight: 400;">Below is an example of NSF L2 connected to BAG planes. Each BAG plane connects to matching Spine Training Switches (STSWs) from all spine planes. Effective oversubscription is 4.98:1. </span><span style="font-weight: 400;"><br />
</span></p>
<figure id="attachment_23635" aria-describedby="caption-attachment-23635" style="width: 1600px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-23635" src="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png" alt="" width="1600" height="870" srcset="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png 1600w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png?resize=916,498 916w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png?resize=768,418 768w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png?resize=1024,557 1024w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png?resize=1536,835 1536w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png?resize=96,52 96w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Prometheus-Backend-Aggregation-BAG-image-4.png?resize=192,104 192w" sizes="auto, (max-width: 992px) 100vw, 62vw" /><figcaption id="caption-attachment-23635" class="wp-caption-text">A BAG inter-building connection for NSF fabric.</figcaption></figure>
<p><span style="font-weight: 400;">Careful management of oversubscription ratios assists in balancing scale and performance. Typical oversubscription from L2 to BAG is around 4.5:1, while BAG-to-BAG oversubscription varies based on regional requirements and link capacity.</span></p>
<h3><span style="font-weight: 400;">Hardware and Routing </span></h3>
<p><span style="font-weight: 400;">Meta’s implementation of BAG uses a modular chassis equipped with Jericho3 (J3) ASIC line cards, each providing up to 432x800G ports for high-capacity, scalable, and resilient interconnect. The central hub BAG employs a larger chassis to accommodate numerous spokes and long-distance links with varied cable lengths for optimized buffer utilization.</span></p>
<p><span style="font-weight: 400;">Routing within BAG uses eBGP with link bandwidth attributes, enabling Unequal Cost Multipath (UCMP) for efficient load balancing and robust failure handling. BAG-to-BAG connections are secured with MACsec, aligning with network security requirements.</span></p>
<h3><span style="font-weight: 400;">Designing the Network for Resilience</span></h3>
<p><span style="font-weight: 400;">The network design meticulously details port striping, IP addressing schemes, and comprehensive failure domain analysis to ensure high availability and minimize the impact of failures. Failure modes are analyzed at the BAG, data hall, and power distribution levels. We also employ various strategies to mitigate blackholing risks, including draining affected BAG planes and conditional route aggregation.</span></p>
<h3><span style="font-weight: 400;">Considerations for Long Cable Distances</span></h3>
<p><span style="font-weight: 400;">An important advantage of BAG’s distributed architecture is it keeps the distance from the L2 edge small, which is important for shallow buffer NSF switches. Longer, BAG-to-BAG, cable distances dictate that we use deep buffer switches for the BAG role. This provides a large headroom buffer to support lossless congestion control protocols like PFC. </span></p>
<h2><span style="font-weight: 400;">Building Prometheus and Beyond</span></h2>
<p><span style="font-weight: 400;">As a technology, BAG is playing an important role in Meta’s next generation of AI infrastructure. By centralizing the interconnection of regional networks, BAG helps enable the gigawatt-scale Prometheus cluster, ensuring seamless, high-capacity networking across tens of thousands of GPUs. This thoughtful design, leveraging modular hardware and resilient topologies, positions BAG to not only meet the demands of Prometheus but also to drive the future innovation and scalability of Meta’s global AI network for years to come.</span></p>
<p>The post <a rel="nofollow" href="https://engineering.fb.com/2026/02/09/data-center-engineering/building-prometheus-how-backend-aggregation-enables-gigawatt-scale-ai-clusters/">Building Prometheus: How Backend Aggregation Enables Gigawatt-Scale AI Clusters</a> appeared first on <a rel="nofollow" href="https://engineering.fb.com">Engineering at Meta</a>.</p>
Continuous AI in practice: What developers can automate today with agentic CI - The GitHub Bloghttps://github.blog/?p=936262026-02-05T17:00:00.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Software engineering has always included work that’s repetitive, necessary, and historically difficult to automate. This isn’t because it lacks values, but because it resists deterministic rules. </p>
<p>Continuous integration (CI) solved part of this by handling tests, builds, formatting, and static analysis—anything that can be described with deterministic rules. CI excels when correctness can be expressed unambiguously: a test passes or fails, a build succeeds or doesn’t, a rule is violated or isn’t. </p>
<p>But CI is intentionally limited to problems that can be reduced to heuristics and rules. </p>
<p>For most teams, the hardest work isn’t writing code. It’s everything that requires judgment around that code: reviewing changes, keeping documentation accurate, managing dependencies, tracking regressions, maintaining tests, monitoring quality, and responding to issues that only surface after code ships. </p>
<p>But a lot of engineering work goes into work that requires interpretation, synthesis, and context, rather than deterministic validation. And an increasing share of engineering tasks fall into a category CI was never designed to handle: work that depends on understanding intent. </p>
<p>“Any task that requires judgment goes beyond heuristics,” says Idan Gazit, head of GitHub Next, which works on research and development initiatives.</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Any time something can’t be expressed as a rule or a flow chart is a place where AI becomes incredibly helpful.</p>
<cite>Idan Gazit, head of GitHub Next</cite></blockquote>
<p>This is why GitHub Next has been exploring a new pattern: <a href="https://githubnext.com/projects/continuous-ai/">Continuous AI</a>, or background agents that operate in your repository the way CI jobs do, but only for tasks that require reasoning instead of rules.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="GitHub Next | Exploring Continuous AI" width="500" height="281" src="https://www.youtube.com/embed/V-sdNfETPYQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading" id="h-why-ci-isn-t-enough-anymore">Why CI isn’t enough anymore</h2>
<p>CI isn’t failing. It’s doing exactly what it was designed to do. </p>
<p>CI is designed for binary outcomes. Tests pass or fail. Builds succeed or don’t. Linters flag well-defined violations. That works well for rule-based automation.</p>
<p>But many of the hardest and most time-consuming parts of engineering are judgment-heavy and context-dependent. </p>
<p>Consider these scenarios: </p>
<ul class="wp-block-list">
<li>A docstring says one thing, but the implementation says another.</li>
<li>Text passes accessibility linting but is still confusing to users.</li>
<li>A dependency adds a new flag, altering behavior without a major version bump.</li>
<li>A regex is compiled inside a loop, tanking performance in subtle ways.</li>
<li>UI behavior changes are only visible when interacting with the product.</li>
</ul>
<p>These problems are about whether intent still holds. </p>
<p>“The first era of AI for code was about code generation,” Idan explains. “The second era involves cognition and tackling the cognitively heavy chores off of developers.”</p>
<p>This is the gap Continuous AI fills: not more automation, but a different class of automation. CI handles deterministic work. Continuous AI applies where correctness depends on reasoning, interpretation, and intent. </p>
<h2 class="wp-block-heading" id="h-what-continuous-ai-actually-means">What Continuous AI actually means</h2>
<p>Continuous AI is not a new product or CI replacement. Traditional CI remains essential. </p>
<p>Continuous AI is a pattern:</p>
<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Continuous AI = natural-language rules + agentic reasoning, executed continuously inside your repository.</strong></td></tr></tbody></table></figure>
<p>In practice, Continuous AI means expressing in plain language what should be true about your code, especially when that expectation cannot be reduced to rules or heuristics. An agent then evaluates the repository and produces artifacts a developer can review: suggested patches, issues, discussions, or insights.</p>
<p>Developers rarely author agentic workflows in a single pass. In practice, they collaborate with an agent to refine intent, add constraints, and define acceptable outputs. The workflow emerges through iteration, not a single sentence. </p>
<p>For example: </p>
<ul class="wp-block-list">
<li>“Check whether documented behavior matches implementation, explain any mismatches, and propose a concrete fix.”</li>
<li>“Generate a weekly report summarizing project activity, emerging bug trends, and areas of increased churn.”</li>
<li>“Flag performance regressions in critical paths.”</li>
<li>“Detect semantic regressions in user flows.”</li>
</ul>
<p>These workflows are not defined by brevity. They combine intent, constraints, and permitted outputs to express expectations that would be awkward or impossible to encode as deterministic rules. </p>
<p>“In the future, it’s not about agents running in your repositories,” Idan says. “It’s about being able to presume you can cheaply define agents for anything you want off your plate permanently.”</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Think about what your work looks like when you can delegate more of it to AI, and what parts of your work you want to retain: your judgment, your taste.</p>
<cite>Idan Gazit, head of GitHub Next</cite></blockquote>
<h2 class="wp-block-heading" id="guardrails-by-design-permissions-and-safe-outputs">Guardrails by design: Permissions and Safe Outputs</h2>
<p>In our work, we define agentic workflows with safety as a first principle. By default, agents operate with read-only access to repositories. They cannot create issues, open pull requests, or modify content unless explicitly permitted. </p>
<p>We call this <strong>Safe Outputs</strong>, which provides a deterministic contract for what an agent is allowed to do. When defining a workflow, developers specify exactly which artifacts an agent may produce, such as opening a pull request or filing an issue, and under what constraints. </p>
<p>Anything outside those boundaries is forbidden. </p>
<p>This model assumes agents can fail or behave unexpectedly. Outputs are sanitized, permissions are explicit, and all activity is logged and auditable. The blast radius is deterministic. </p>
<p>This isn’t “AI taking over software development.” It’s AI operating within guardrails developers explicitly define. </p>
<h2 class="wp-block-heading" id="why-natural-language-complements-yaml">Why natural language complements YAML</h2>
<p>As we’ve developed this, we’ve heard a common question: why not just extend CI with more rules? </p>
<p>When a problem can be expressed deterministically, extending CI is exactly the right approach. YAML, schemas, and heuristics remain the correct tools for those jobs. </p>
<p>But many expectations cannot be reduced to rules without losing meaning. </p>
<p>Idan puts it simply: “<strong>There’s a larger class of chores and tasks we can’t express in heuristics.</strong>”</p>
<p>A rule like “whenever documentation and code diverge, identify and fix it” cannot be expressed in a regex or schema. It requires understanding semantics and intent. A natural-language instruction can express that expectation clearly enough for an agent to reason over it. </p>
<p>Natural language doesn’t replace YAML, but instead complements it. CI remains the foundation. Continuous AI expands automation into commands CI was never designed to cover. </p>
<h2 class="wp-block-heading" id="developers-stay-in-the-loop-by-design">Developers stay in the loop, by design</h2>
<p>Agentic workflows don’t make autonomous commits. Instead, they can create the same kinds of artifacts developers would (pull requests, issues, comments, or discussions) depending on what the workflow is permitted to do.</p>
<p>Pull requests remain the most common outputs because they align with how developers already review and reason about change. </p>
<p>“The PR is the existing noun where developers expect to review work,” Idan says. “It’s the checkpoint everyone rallies around.”</p>
<p>That means:</p>
<ul class="wp-block-list">
<li>Agents don’t merge code</li>
<li>Developers retain full control</li>
<li>Everything is visible and reviewable</li>
</ul>
<p>Developer judgment remains the final authority. Continuous AI helps scale that judgment across a codebase. </p>
<h2 class="wp-block-heading" id="how-github-next-is-experimenting-with-these-ideas">How GitHub Next is experimenting with these ideas</h2>
<p>The <a href="https://githubnext.github.io/gh-aw/">GitHub Next prototype</a> (or you can find the repository at <a href="https://github.com/githubnext/gh-aw">gh aw</a>) uses a deliberately simple pattern:</p>
<ol class="wp-block-list">
<li>Write an agentic workflow</li>
<li>Compile it into a GitHub Action</li>
<li>Push it</li>
<li>Let an agent run on any GitHub Actions trigger (pull requests, pushes, issues, comments, or schedules) </li>
</ol>
<p>Nothing is hidden; everything is transparent and visible.</p>
<p>“You want an action to look for style violations like misplaced brackets, that’s heuristics,” Idan explains. “But when you want deeper intent checks, you need AI.” </p>
<h2 class="wp-block-heading" id="what-continuous-ai-can-automate-today">What Continuous AI can automate today</h2>
<p>These aren’t theoretical examples. GitHub Next has tested these patterns in real repositories.</p>
<h3 class="wp-block-heading" id="1-fix-mismatches-between-documentation-and-behavior">1. Fix mismatches between documentation and behavior</h3>
<p>This is one of the hardest problems for CI because it requires understanding <em>intent</em>.</p>
<p>An agentic workflow can:</p>
<ul class="wp-block-list">
<li>Read a function’s docstring</li>
<li>Compare it to the implementation</li>
<li>Detect mismatches</li>
<li>Suggest updates to either the code or the docs</li>
<li>Open a pull request</li>
</ul>
<p>Idan calls this one of the most meaningful categories of work Continuous AI can address: “You don’t want to worry every time you ship code if the documentation is still right. That wasn’t possible to automate before AI.”</p>
<h3 class="wp-block-heading" id="2-generate-ongoing-project-reports-with-reasoning">2. Generate ongoing project reports with reasoning</h3>
<p>Maintainers and managers spend significant time answering the same questions repeatedly: What changed yesterday? Are bugs trending up or down? Which parts of the codebase are most active? </p>
<p>Agentic workflows can generate recurring reports that pull from multiple data sources (issues, pull requests, commits, and CI results), and apply reasoning on top. </p>
<p>For example, an agent can: </p>
<ul class="wp-block-list">
<li>Summarize daily or weekly activity </li>
<li>Highlight emerging bug trends</li>
<li>Correlate recent changes with test failures</li>
<li>Surfaces areas of increased churn</li>
</ul>
<p>The value isn’t the report itself. It’s the synthesis across multiple data sources that would otherwise require manual analysis. </p>
<h3 class="wp-block-heading" id="3-keep-translations-up-to-date-automatically">3. Keep translations up to date automatically</h3>
<p>Anyone who has worked with localized applications knows the pattern: Content changes in English, translations fall behind, and teams batch work late in the cycle (often right before a release).</p>
<p>An agent can:</p>
<ul class="wp-block-list">
<li>Detect when English text changes</li>
<li>Re-generate translations for all languages</li>
<li>Open a single pull request containing the updates</li>
</ul>
<p>The workflow becomes continuous, not episodic. Machine translations might not be perfect out of the box, but having a draft translation ready for review in a pull request makes it that much easier to engage help from professional translators or community contributors.</p>
<h3 class="wp-block-heading" id="4-detect-dependency-drift-and-undocumented-changes">4. Detect dependency drift and undocumented changes</h3>
<p>Dependencies often change behavior without changing major versions. New flags appear. Defaults shift. Help output evolves.</p>
<p>In one demo, an agent:</p>
<ul class="wp-block-list">
<li>Installed dependencies</li>
<li>Inspected CLI help text</li>
<li>Diffed it against previous days</li>
<li>Found an undocumented flag</li>
<li>Filed an issue before maintainers even noticed</li>
</ul>
<p>This requires semantic interpretation, not just diffs, which is why classical CI cannot handle it. </p>
<p>“This is the first harbinger of the new phase of AI,” Idan says. “We’re moving from generation to reasoning.”</p>
<h3 class="wp-block-heading" id="5-automated-test-coverage-burn-down">5. Automated test-coverage burn down</h3>
<p>In one experiment:</p>
<ul class="wp-block-list">
<li>Test coverage went from ~5% to near 100%</li>
<li>1,400+ tests were written</li>
<li>Across 45 days</li>
<li>For about ~$80 worth of tokens</li>
</ul>
<p>And because the agent produced small pull requests daily, developers reviewed changes incrementally.</p>
<h3 class="wp-block-heading" id="6-background-performance-improvements">6. Background performance improvements</h3>
<p>Linters and analyzers don’t always catch performance pitfalls that depend on understanding the code’s intent.</p>
<p>Example: compiling a regex inside a function call so it compiles on every invocation.</p>
<p>An agent can:</p>
<ul class="wp-block-list">
<li>Recognize the inefficiency</li>
<li>Rewrite the code to pre-compile the regex</li>
<li>Open a pull request with an explanation</li>
</ul>
<p>Small things add up, especially in frequently called code paths.</p>
<h3 class="wp-block-heading" id="7-automated-interaction-testing-using-agents-as-deterministic-play-testers">7. Automated interaction testing (using agents as deterministic play-testers)</h3>
<p>This was one of the more creative demos from Universe: using agents to play a simple platformer game thousands of times to detect UX regressions.</p>
<p>Strip away the game, and the pattern is widely useful:</p>
<ul class="wp-block-list">
<li>Onboarding flows</li>
<li>Multi-step forms</li>
<li>Retry loops</li>
<li>Input validation</li>
<li>Accessibility patterns under interaction</li>
</ul>
<p>Agents can simulate user behavior at scale and compare variants.</p>
<h2 class="wp-block-heading" id="how-to-build-your-first-agentic-workflow">How to build your first agentic workflow</h2>
<p>Developers don’t need a new CI system or separate infrastructure to try this. The GitHub Next prototype (gh aw) uses a simple pattern:</p>
<p id="h-1-write-a-natural-language-rule-in-a-markdown-file"><strong>1. Write a natural-language rule in a Markdown file</strong></p>
<p>For example:</p>
<pre class="wp-block-code language-plaintext"><code>---
on: daily
permissions: read
safe-outputs:
create-issue:
title-prefix: "[news] "
---
Analyze the recent activity in the repository and:
- create an upbeat daily status report about the activity
- proviate an agentic task description to improve the project based on the activity.
Create an issue with the report.</code></pre>
<p id="h-2-compile-it-into-an-action"><strong>2. Compile it into an action</strong></p>
<pre class="wp-block-code"><code>gh aw compile daily-team-status</code></pre>
<p>This generates a GitHub Actions workflow.</p>
<p><strong>3. Review the YAML</strong></p>
<p>Nothing is hidden. You can see exactly what the agent will do.</p>
<p><strong>4. Push to your repository</strong></p>
<p>The agentic workflow begins executing in response to repository events or on a schedule you define, <strong>just like any other action</strong>.</p>
<p><strong>5. Review the issue it creates</strong></p>
<h2 class="wp-block-heading" id="patterns-to-watch-next">Patterns to watch next</h2>
<p>While still early, several trends are already emerging in developer workflows:</p>
<p><strong>Pattern 1: Natural-language rules will become a part of automation</strong></p>
<p>Developers will write short English rules that express intent:</p>
<ul class="wp-block-list">
<li>“Keep translations current”</li>
<li>“Flag performance regressions”</li>
<li>“Warn on auth patterns that look unsafe”</li>
</ul>
<p><strong>Pattern 2: Repositories will begin hosting a fleet of small agents</strong></p>
<p>Not one general agent, but many small ones with each responsible for one chore, one check, or one rule of thumb.</p>
<p><strong>Pattern 3: Tests, docs, localization, and cleanup will shift into “continuous” mode</strong></p>
<p>This mirrors the early CI movement: Not replacing developers, but changing when chores happen from “when someone remembers” to “every day.”</p>
<p><strong>Pattern 4: Debuggability will win over complexity</strong></p>
<p>Developers will adopt agentic patterns that are transparent, auditable, and diff-based—not opaque systems that act without visibility.</p>
<h2 class="wp-block-heading" id="what-developers-should-take-away">What developers should take away</h2>
<p>“Custom agents for offline tasks, that’s what Continuous AI is,” Idan says. “Anything you couldn’t outsource before, you now can.”</p>
<p><strong>More precisely: many judgment-heavy chores that were previously manual can now be made continuous.</strong></p>
<p>This requires a mental shift, like moving from owning files to streaming music.</p>
<p>“You already had all the music,” Idan says. “But suddenly the player is helping you discover more.”</p>
<h2 class="wp-block-heading" id="start-with-one-small-workflow">Start with one small workflow</h2>
<p>Continuous AI is not an all-or-nothing paradigm. You don’t need to overhaul your pipeline. Start with something small:</p>
<ul class="wp-block-list">
<li>Translate strings</li>
<li>Add missing tests</li>
<li>Check for docstring drift</li>
<li>Detect dependency changes</li>
<li>Flag subtle performance issues</li>
</ul>
<p>Each of these is something agents can meaningfully assist with today.</p>
<p>Identify the recurring judgment-heavy tasks that quietly drain attention, and make those tasks continuous instead of episodic.</p>
<p>If CI automated rule-based work over the past decade, Continuous AI may do the same for select categories of judgment-based work, when applied deliberately and safely.</p>
<div class="wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<p><a href="https://github.com/githubnext/awesome-continuous-ai">Explore Continuous AI Actions and frameworks ></a></p>
</div>
</body></html>
<p>The post <a href="https://github.blog/ai-and-ml/generative-ai/continuous-ai-in-practice-what-developers-can-automate-today-with-agentic-ci/">Continuous AI in practice: What developers can automate today with agentic CI</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
Introducing the Developer Knowledge API and MCP Server - Google Developers Bloghttps://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/2026-02-05T10:15:00.000ZGoogle is launching the Developer Knowledge API and MCP Server in public preview. This new toolset provides a canonical, machine-readable way for AI assistants and agentic platforms to search and retrieve up-to-date documentation across Firebase, Google Cloud, Android, and more. By using the official MCP server, developers can connect tools directly to Google’s documentation corpus, ensuring that AI-generated code and guidance are based on authoritative, real-time context.No Display? No Problem: Cross-Device Passkey Authentication for XR Devices - Engineering at Metahttps://engineering.fb.com/?p=235992026-02-04T22:00:07.000Z<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">We’re sharing a novel approach to enabling cross-device passkey authentication for devices with inaccessible displays (like XR devices).</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Our approach bypasses the use of QR codes and enables cross-device authentication without the need for an on-device display, while still complying with all trust and proximity requirements.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">This approach builds on work done by the FIDO Alliance and we hope it will open the door to bring secure, passwordless authentication to a whole new ecosystem of devices and platforms.</span></li>
</ul>
<p><span style="font-weight: 400;">Passkeys are a significant leap forward in authentication, offering a phishing-resistant, cryptographically secure alternative to traditional passwords. Generally, the standard cross-device passkey flow, where someone registers or authenticates on a desktop device by approving the action on their nearby mobile device, is done in a familiar way with QR codes scanned by their phone camera. But how can we facilitate this flow for XR devices with a head-mounted display or no screen at all, or for other devices with an </span><i><span style="font-weight: 400;">inaccessible display</span></i><span style="font-weight: 400;"> like smart home hubs and industrial sensors? </span></p>
<p><span style="font-weight: 400;">We’ve taken a novel approach to adapting the WebAuthn passkey flow and </span><a href="https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html"><span style="font-weight: 400;">FIDO’s CTAP hybrid protocol</span></a><span style="font-weight: 400;"> for this unique class of devices </span><span style="font-weight: 400;">t</span><span style="font-weight: 400;">hat either lack a screen entirely or whose screen is not easily accessible to another device’s camera. Our implementation has been developed and is now broadly available on Meta Quest devices powered by Meta Horizon OS. We hope that this approach can also ensure robust security built on the strength of existing passkey frameworks, without sacrificing usability, for users of a variety of other screenless IoT devices, consumer electronics, and industrial hardware.</span></p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-23612" src="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-Quest-cross-device-passkey.gif" alt="" width="960" height="664" /></p>
<h2><span style="font-weight: 400;">The Challenge: No Screen, No QR Code</span></h2>
<p><span style="font-weight: 400;">The </span><a href="http://fidoalliance.org/specs/fido-v2.2-ps-20250714/fido-client-to-authenticator-protocol-v2.2-ps-20250714.html#sctn-hybrid" target="_blank" rel="noopener"><span style="font-weight: 400;">standard cross-device flow </span></a><span style="font-weight: 400;">relies on two primary mechanisms:</span></p>
<ol>
<li style="font-weight: 400;" aria-level="1"><b>QR code scanning:</b><span style="font-weight: 400;"> The relying party displays a QR code on the desktop/inaccessible device, which the mobile authenticator scans to establish a secure link.</span></li>
<li style="font-weight: 400;" aria-level="1"><b>Bluetooth/NFC proximity:</b><span style="font-weight: 400;"> The devices use local communication protocols to discover each other and initiate the secure exchange.</span></li>
</ol>
<p><span style="font-weight: 400;">For devices with no display, the QR code method is impossible. Proximity-based discovery is feasible, but initiating the user verification step and confirming the intent without any on-device visual feedback can introduce security and usability risks. People need clear assurance that they are approving the correct transaction on the correct device.</span></p>
<h2><span style="font-weight: 400;">Our Solution: Using a Companion App for Secure Message Transport</span></h2>
<p><span style="font-weight: 400;">Scanning a QR code sends the authenticator device a command to initiate a hybrid (cross-device) login flow with a nonce that identifies the unauthenticated device client. But if a user has a companion application – like the Meta Horizon app – that uses the same account as the device we can use that application to pass this same request to the authenticator OS and execute it using general link/intent execution.</span></p>
<p><span style="font-weight: 400;">We made the flow easy to navigate by using in-app notifications to show users when a login request has been initiated, take them directly into the application, and immediately execute the login request.</span></p>
<p><span style="font-weight: 400;">For simplicity, we opted to begin the hybrid flow as soon as the application is opened since the user would have had to take some action (clicking the notification or opening the app) to trigger this and there is an additional user verification step in hybrid implementations on iOS and Android.</span></p>
<p><span style="font-weight: 400;">Here’s how this plays out on a Meta Quest with the Meta Horizon mobile app:</span></p>
<p><img decoding="async" class="alignnone size-full wp-image-23601" src="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png" alt="" width="1999" height="726" srcset="https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png 1999w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png?resize=916,333 916w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png?resize=768,279 768w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png?resize=1024,372 1024w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png?resize=1536,558 1536w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png?resize=96,35 96w, https://engineering.fb.com/wp-content/uploads/2026/02/Meta-XR-passkeys-flow.png?resize=192,70 192w" sizes="(max-width: 992px) 100vw, 62vw" /></p>
<h3><span style="font-weight: 400;">1. The Hybrid Flow Message Is Generated</span></h3>
<p><span style="font-weight: 400;">When a passkey login is initiated on the Meta Quest, the headset’s browser locally constructs the same payload that would have been embedded in a QR Code – including a fresh ECDH public key, a session-specific secret, and routing information used later in the handshake. Instead of rendering this information into an image (QR code), the browser encodes it into a FIDO URL (the standard mechanism defined for hybrid transport) that instructs the mobile device to begin the passkey authentication flow.</span></p>
<h3><span style="font-weight: 400;">2. The Message Is Sent to the Companion App</span></h3>
<p><span style="font-weight: 400;">After the FIDO URL is generated, the headset requires a secure and deterministic method for transferring it to the user’s phone. Because the device cannot present a QR code, the system leverages the Meta Horizon app’s authenticated push channel to deliver the FIDO URL directly to the mobile device. When the user selects the passkey option in the login dialog, the headset encodes the FIDO URL as structured data within a GraphQL-based push notification. </span></p>
<p><span style="font-weight: 400;">The Meta Horizon app, signed in with the same account as the headset, receives this payload and validates the delivery context to ensure it is routed to the correct user. </span></p>
<h3><span style="font-weight: 400;">3. The Application Sends a Notification of the Login Request</span></h3>
<p><span style="font-weight: 400;">After the FIDO URL is delivered to the mobile device, the platform’s push service surfaces it as a standard iOS or Android notification indicating that a login request is pending. When the user taps the notification, the operating system routes the deep link to the Meta Horizon app. The app then opens the FIDO URL using the system URL launcher and invokes the operating system passkey interface.</span></p>
<p><span style="font-weight: 400;">For users that have the notification turned off or disabled, launching the Meta Horizon app directly will also trigger a query to the backend for any pending passkey requests associated with the user’s account. If a valid request exists (requests expire after five minutes), the app automatically initiates the same passkey flow by opening the FIDO URL.</span></p>
<p><span style="font-weight: 400;">Once the FIDO URL is opened, the mobile device begins the hybrid transport sequence, including broadcasting the BLE advertisement, establishing the encrypted tunnel, and producing the passkey assertion. In this flow, the system notification and the app launch path both serve as user consent surfaces and entry points into the standard hybrid transport workflow.</span></p>
<h3><span style="font-weight: 400;">4. The App Executes the Hybrid Command</span></h3>
<p><span style="font-weight: 400;">Once the user approves the action on their mobile device, the secure channel is established as per WebAuthn standards. The main difference is the challenge exchange timing:</span></p>
<ol>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The inaccessible device generates the standard WebAuthn challenge and waits.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The mobile authenticator, initiates the secure BLE/NFC connection.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The </span><span style="font-weight: 400;">challenge</span><span style="font-weight: 400;"> is transmitted over this secure channel.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Upon UV success, the mobile device uses the relevant key material to generate the </span><span style="font-family: 'courier new', courier; color: #008000;"><span style="font-weight: 400;">AuthenticatorAssertionResponse<span style="font-family: 'Facebook Reader'; color: #000000;"> or </span>AuthenticatorAttestationResponse</span></span><span style="font-weight: 400;">.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The response is sent back to the inaccessible device.</span></li>
</ol>
<p><span style="font-weight: 400;">The inaccessible device then acts as the conduit, forwarding the response to the relying party server to complete the transaction, exactly as a standard display-equipped device would.</span></p>
<h2><span style="font-weight: 400;">Impact and Future Direction</span></h2>
<p><span style="font-weight: 400;">This novel implementation successfully bypasses the need for an on-device display in the cross-device flow and still complies with the proximity and other trust challenges that exist today for cross-device passkey login. We hope that our solution paves the way for secure, passwordless authentication across a wider range of different platforms and ecosystems, moving passkeys beyond just mobile and desktop environments and into the burgeoning world of wearable and IoT devices. </span></p>
<p><span style="font-weight: 400;">We are proud to build on top of and collaborate the excellent work already done in this area by our peers in the FIDO Alliance and mobile operating systems committed to this work and building a robust and interoperable ecosystem for secure and easy login.</span></p>
<p>The post <a rel="nofollow" href="https://engineering.fb.com/2026/02/04/security/cross-device-passkey-authentication-for-xr-devices-meta-quest/">No Display? No Problem: Cross-Device Passkey Authentication for XR Devices</a> appeared first on <a rel="nofollow" href="https://engineering.fb.com">Engineering at Meta</a>.</p>
Pick your agent: Use Claude and Codex on Agent HQ - The GitHub Bloghttps://github.blog/?p=935662026-02-04T17:00:19.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Context switching equals friction in software development. Today, we’re removing some of that friction with the latest updates to Agent HQ which lets you run coding agents from multiple providers directly inside GitHub and your editor, keeping context, history, and review attached to your work.</p>
<p>Copilot Pro+ and Copilot Enterprise users can now <a href="https://github.com/copilot/agents?utm_source=blog-agents-tab-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">run multiple coding agents</a> directly inside GitHub, GitHub Mobile, and Visual Studio Code (with Copilot CLI support coming soon). That means you can use agents like GitHub Copilot, Claude by Anthropic, and OpenAI Codex (both in public preview) today.</p>
<p>With Codex, Claude, and Copilot in Agent HQ, you can move from idea to implementation using different agents for different steps <em>without </em>switching tools or losing context. </p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>We’re bringing Claude into GitHub to meet developers where they are. With Agent HQ, Claude can commit code and comment on pull requests, enabling teams to iterate and ship faster and with more confidence. Our goal is to give developers the reasoning power they need, right where they need it.</p>
<cite>Katelyn Lesse, Head of Platform, Anthropic</cite></blockquote>
<figure class="wp-block-video"><video height="1080" style="aspect-ratio: 1920 / 1080;" width="1920" controls poster="https://github.blog/wp-content/uploads/2026/02/Screenshot-2026-02-03-at-4.03.01-PM.png" src="https://github.blog/wp-content/uploads/2026/02/copilot-3p-agents-v4-burn-in-1.mp4"></video></figure>
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--1" style="border-top-width:4px">
<h2 class="wp-block-heading" id="h-how-to-get-started">How to get started </h2>
<p>When you have a task, you can choose Copilot, Claude, Codex, or a custom agent. You can make them work asynchronously and then review the results on your own time. </p>
<p>Each coding agent session consumes one premium request. You can currently start Claude and Codex sessions from github.com, GitHub Mobile, and in VS Code. Claude and Codex must be explicitly enabled in in your settings before use. <a href="https://docs.github.com/copilot/how-tos/manage-your-account/manage-policies#enabling-or-disabling-third-party-coding-agents-in-your-repositories?utm_source=blog-getting-started-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">See details on how</a>. </p>
<h3 class="wp-block-heading is-typography-preset-h4" id="h-create-and-view-agent-sessions-on-github-nbsp">Create and view agent sessions on GitHub </h3>
<p>You can start and manage agent sessions directly from GitHub: </p>
<ul class="wp-block-list">
<li>Open the <strong>Agents</strong> tab in any repository where agents are enabled. </li>
<li>Enter your request and select an agent using the Copilot icon. </li>
<li>Submit the request to start the session. </li>
</ul>
<p>Agents run asynchronously by default. You can follow their progress in real time or review completed sessions later, with detailed logs showing what the agent did and why. </p>
<p>Each session produces artifacts like comments, drafts, and proposed changes that can be reviewed like any other contribution. </p>
<h3 class="wp-block-heading is-typography-preset-h4" id="h-assign-agents-to-issues-and-pull-requests-nbsp">Assign agents to issues and pull requests </h3>
<p>You can also use agents directly in your existing collaboration workflows: </p>
<ul class="wp-block-list">
<li>Assign an issue to Copilot, Claude, Codex, or all three to compare results. </li>
<li>Agents can submit draft pull requests for review. </li>
<li>Assign agents to existing pull requests to request changes or further analysis. </li>
<li>Mention <code>@Copilot</code>, <code>@Claude</code>, or <code>@Codex</code> in pull request comments to prompt follow-up work. </li>
</ul>
<p>Agent activity is logged and reviewable, so their output fits naturally into the same workflows you already use to evaluate developer contributions. </p>
<p>Agents can still make mistakes. That’s exactly why their output is designed to be reviewed, compared, and challenged, <a href="https://simonwillison.net/2025/Feb/3/a-computer-can-never-be-held-accountable/" target="_blank" rel="noreferrer noopener">not blindly accepted.</a> </p>
<h3 class="wp-block-heading is-typography-preset-h4" id="h-start-agent-sessions-in-visual-studio-code-nbsp">Start agent sessions in Visual Studio Code </h3>
<p>You can also work with agents directly from VS Code (version 1.109 or later): </p>
<ol start="1" class="wp-block-list">
<li>Open the <strong>Agent sessions</strong> view from the title bar or by pressing <kbd>Ctrl+Shift+P</kbd> /<kbd>CMD+Shift+P</kbd> and searching for “agent sessions” </li>
<li>Choose a session type and your agent:
<ul class="wp-block-list">
<li><strong>Local</strong> (Copilot), <strong>Claude</strong>, or <strong>Codex</strong> for fast, interactive assistance </li>
<li><strong>Cloud</strong> for autonomous tasks that run on GitHub, then select an agent </li>
<li><strong>Background</strong> for asynchronous local work (Copilot only) </li>
</ul>
</li>
</ol>
<p>This lets you explore ideas in the editor and then delegate longer-running work to GitHub without losing context or history.</p>
</aside>
<h2 class="wp-block-heading" id="h-from-faster-code-to-better-decisions-nbsp">From faster code to better decisions </h2>
<p>Agent HQ also lets you compare how different agents approach the same problem, too. You can assign multiple agents to a task, and see how Copilot, Claude, and Codex reason about tradeoffs and arrive at different solutions. </p>
<p>In practice, this helps you surface issues earlier by using agents for different kinds of review: </p>
<ul class="wp-block-list">
<li><strong>Architectural guardrails:</strong> Ask one or more agents to evaluate modularity and coupling, helping identify changes that could introduce unintended side effects. </li>
<li><strong>Logical pressure testing:</strong> Use another agent to hunt for edge cases, async pitfalls, or scale assumptions that could cause problems in production. </li>
<li><strong>Pragmatic implementation:</strong> Have a separate agent propose the smallest, backward-compatible change to keep the blast radius of a refactor low.</li>
</ul>
<p>This method of working moves your reviews and thinking to strategy over syntax. </p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Our collaboration with GitHub has always pushed the frontier of how developers build software. The first Codex model helped power Copilot and inspired a new generation of AI-assisted coding. We share GitHub’s vision of meeting developers wherever they work, and we’re excited to bring Codex to GitHub and VS Code. Codex helps engineers work faster and with greater confidence—and with this integration, millions more developers can now use it directly in their primary workspace, extending the power of Codex everywhere code gets written.</p>
<cite>Alexander Embiricos, OpenAI </cite></blockquote>
<h2 class="wp-block-heading" id="h-why-running-agents-on-github-matters-nbsp">Why running agents on GitHub matters </h2>
<p>GitHub is already where code lives, collaboration happens, and decisions are reviewed, governed, and shipped. </p>
<p>Making coding agents native to that workflow, rather than external tools, makes them even more useful at scale. Instead of copying and pasting context between tools, documents, and threads, all discussion and proposed changes stay attached to the repository itself. </p>
<p>With Copilot, Claude, and Codex working directly in GitHub and VS Code, you can: </p>
<ul class="wp-block-list">
<li><strong>Explore tradeoffs early:</strong> Run agents in parallel to surface competing approaches and edge cases before code hardens. </li>
<li><strong>Keep context attached to the work:</strong> Agents operate inside your repository, issues, and pull requests instead of starting from stateless prompts. </li>
<li><strong>Avoid new review processes:</strong> Agent-generated changes show up as draft pull requests and comments, reviewed the same way you’d review a teammate’s work. </li>
</ul>
<p>There are no new dashboards to learn, and no separate AI workflows to manage. Everything runs inside the environments you already use. </p>
<h2 class="wp-block-heading" id="h-built-for-teams-not-just-individuals-nbsp">Built for teams, not just individuals </h2>
<p>These workflows don’t just benefit individual developers. Agent HQ gives you org-wide visibility and systematic control over how AI interacts with your codebase: </p>
<ul class="wp-block-list">
<li><strong>Agent controls:</strong> Manage <a href="https://docs.github.com/en/copilot/concepts/policies?utm_source=blog-policy-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">access and security policies</a> in one place, allowing enterprise admins to define which agents and models are permitted across the organization. </li>
<li><strong>Code quality checks:</strong> <a href="https://docs.github.com/en/code-security/concepts/about-code-quality?utm_source=blog-code-quality-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">GitHub Code Quality</a> (in public preview) extends Copilot’s security checks to evaluate the maintainability and reliability impact of changed code, helping ensure “LGTM” reflects long-term code health. </li>
<li><strong>Automated first-pass review:</strong> We have integrated a <a href="https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review?utm_source=blog-code-review-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">code review</a> step directly into the Copilot’s workflow, allowing Copilot to address initial problems before a developer ever sees the code. </li>
<li><strong>Impact metrics:</strong> Use the <a href="https://docs.github.com/en/copilot/concepts/copilot-metrics?utm_source=blog-metrics-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">Copilot metrics dashboard</a> (in public preview) to track usage and impact across your entire organization, providing clear traceability for agent-generated work. </li>
<li><strong>Security and auditability:</strong> Maintain full control with <a href="https://docs.github.com/en/copilot/how-tos/administer-copilot/manage-for-organization/review-activity/review-audit-logs?utm_source=blog-audit-logs-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">audit logging and enterprise-grade access management</a>, ensuring agents work with your security posture instead of against it. </li>
</ul>
<p>This allows teams to adopt agent-based workflows without sacrificing code quality, accountability, or trust. </p>
<h2 class="wp-block-heading" id="h-more-agents-nbsp-coming-nbsp-soon-nbsp">More agents coming soon </h2>
<p>Access to Claude and Codex will soon expand to more Copilot subscription types. In the meantime, we’re actively working with partners, including Google, Cognition, and xAI to bring more specialized agents into GitHub, VS Code, and Copilot CLI workflows. </p>
<div class="wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<p><a href="https://docs.github.com/copilot/how-tos/manage-your-account/manage-policies#enabling-or-disabling-third-party-coding-agents-in-your-repositories?utm_source=blog-getting-started-cta&utm_medium=blog&utm_campaign=agent-3p-platform-feb-2026">Read the docs to get started ></a></p>
</div>
</body></html>
<p>The post <a href="https://github.blog/news-insights/company-news/pick-your-agent-use-claude-and-codex-on-agent-hq/">Pick your agent: Use Claude and Codex on Agent HQ </a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
What the fastest-growing tools reveal about how software is being built - The GitHub Bloghttps://github.blog/?p=935512026-02-03T17:00:00.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>In 2025, software development crossed a quiet threshold. In <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">our latest Octoverse report</a>, we found that the fastest-growing languages, tools, and open source projects on GitHub are no longer about shipping more code. Instead, they’re about reducing friction in a world where AI is helping developers build more, faster.</p>
<p>By looking at some of the areas of fastest growth over the past year, we can see how developers are adapting through: </p>
<ul class="wp-block-list">
<li>The programming languages that are growing most in AI-assisted development workflows.</li>
<li>The tools that win when speed and reproducibility matter.</li>
<li>The areas where new contributors are showing up (and what helps them stick).</li>
</ul>
<p>Rather than catalog trends, we want to focus on what those signals mean for how software is being built today and what choices you might consider heading into 2026. </p>
<h2 class="wp-block-heading" id="h-the-elephant-in-the-room-typescript-is-the-new-1">The elephant in the room: Typescript is the new #1</h2>
<p>In August 2025, <a href="https://github.blog/developer-skills/programming-languages-and-frameworks/7-learnings-from-anders-hejlsberg-the-architect-behind-c-and-typescript/">TypeScript became the most-used language on GitHub</a>, overtaking Python and JavaScript for the first time. Over the past year, <a href="https://github.blog/developer-skills/programming-languages-and-frameworks/typescripts-rise-in-the-ai-era-insights-from-lead-architect-anders-hejlsberg/">TypeScript added more than one million contributors</a>, which was the largest absolute growth of any language on GitHub. </p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" height="576" width="1024" src="https://github.blog/wp-content/uploads/2025/10/octoverse-2025-top-programming-languages.png?resize=1024%2C576" alt="A chart showing the top 10 programming languages on GitHub from 2023 to 2025. TypeScript rises to #1 in 2025, overtaking Python and JavaScript, which move to #2 and #3 respectively. Other top languages include Java, C#, PHP, Shell, C++, HCL, and Go. The chart tracks ranking changes over time on a dark background with colored lines representing each language." class="wp-image-91509" srcset="https://github.blog/wp-content/uploads/2025/10/octoverse-2025-top-programming-languages.png?w=1728 1728w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-top-programming-languages.png?w=300 300w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-top-programming-languages.png?w=768 768w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-top-programming-languages.png?w=1024 1024w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-top-programming-languages.png?w=1536 1536w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>
<p>Python also continued to grow rapidly, adding roughly 850,000 contributors (+48.78% YoY), while JavaScript grew more slowly (+24.79%, ~427,000 contributors). Together, TypeScript and Python both significantly outpaced JavaScript in both total and percentage growth. </p>
<p>This shift signals more than a preference change. Typed languages are increasingly becoming the default for new development, particularly as AI-assisted coding becomes routine. Why is that?</p>
<p>In practice, a significant portion of the failures teams encounter with AI-generated code surface as type mismatches, broken contracts, or incorrect assumptions between components. Stronger type systems act as early guardrails: they can help catch errors sooner, reduce review churn, and make AI-generated changes easier to reason about before code reaches production. </p>
<p>If you’re going to be using AI in your software design, which more and more developers are doing on a daily basis, strongly typed languages are your friend.</p>
<p><strong>Here’s what this means in practice: </strong></p>
<ul class="wp-block-list">
<li>If you’re starting a new project today, TypeScript is increasingly becoming the default (especially for teams using AI in daily development).</li>
<li>If you’re introducing AI-assisted workflows into an existing JavaScript codebase, adding types may reduce friction more than switching models or tools.</li>
</ul>
<h2 class="wp-block-heading" id="python-is-key-for-ai">Python is key for AI</h2>
<p>Contributor counts show who is using a language. Repository data shows what that language is being used to build. </p>
<p>When we look specifically at AI-focused repositories, Python stands apart. As of August 2025, nearly half of all new AI projects on GitHub were built primarily in Python. </p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" height="576" width="1024" src="https://github.blog/wp-content/uploads/2026/01/GitHub-Octoverse-2025_Most-commonly-used-languages-inside-AI%E2%80%91tagged-repos_1920x1080_2x.png?resize=1024%2C576" alt="A chart listing the most commonly used programming languages in AI-tagged projects on GitHub in 2025. Python ranks first with 582,000 repositories (+50.7% year over year), followed by JavaScript with 88,000 (+24.8%), TypeScript with 86,000 (+77.9%), Shell with 9,000 (+324%), and C++ with 7,800 (+11%). The chart includes brief descriptions of each language’s role in AI development, displayed on a blue gradient background with green geometric ribbon graphics." class="wp-image-93553"></figure>
<p>This matters because AI projects now account for a disproportionate share of open source momentum. Six of the ten fastest-growing open source projects by contributors in 2025 were directly focused on AI infrastructure or tooling.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" height="576" width="1024" src="https://github.blog/wp-content/uploads/2025/10/octoverse-2025-fastest-growing-open-source-projects-by-contributors.png?resize=1024%2C576" alt="A table listing the fastest-growing open source projects on GitHub in 2025 by contributors. The top ten are zen-browser/desktop, cline/cline, vllm-project/vllm, astral-sh/uv, microsoft/vscode, infiniflow/ragflow, sgl-project/sglang, continuedev/continue, comfyanonymous/ComfyUI, and home-assistant/core. Growth rates range from 2,301% to 6,836%, with most projects marked as AI-focused. Displayed on a blue gradient background with the GitHub Octoverse ribbon graphic." class="wp-image-91494" srcset="https://github.blog/wp-content/uploads/2025/10/octoverse-2025-fastest-growing-open-source-projects-by-contributors.png?w=1440 1440w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-fastest-growing-open-source-projects-by-contributors.png?w=300 300w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-fastest-growing-open-source-projects-by-contributors.png?w=768 768w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-fastest-growing-open-source-projects-by-contributors.png?w=1024 1024w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>
<p>Python’s role here isn’t new, but it is evolving. The data suggests a shift from experimentation toward production-ready AI systems, with Python increasingly anchoring packaging, orchestration, and deployment rather than living only in notebooks. </p>
<p>Moreover, Python is likely to continue to grow in 2026, as AI continues to gain support and additional projects.</p>
<p><strong>Here’s what this means in practice: </strong><strong><br></strong></p>
<ul class="wp-block-list">
<li>Python remains the backbone of applied AI work from training and inference to orchestration.</li>
<li>Production-focused Python skills such as packaging, typing, CI, and containerization are becoming more important than exploratory scripting alone. </li>
</ul>
<h2 class="wp-block-heading" id="a-deeper-look-at-the-top-open-source-projects">A deeper look at the top open source projects</h2>
<p>Looking across the fastest-growing projects, a clear pattern emerges: developers are optimizing for speed, control, and predictable outcomes. </p>
<p>Many of the fastest-growing tools emphasize performance and minimalism. Projects like <a href="https://github.com/astral-sh/uv">astral-sh/uv</a>, a package and project manager, focus on dramatically faster Python package management. This reflects a growing intolerance for slow feedback loops and non-deterministic environments. </p>
<p>Having just one of these projects could be an anomaly, but having multiple indicates a clear trend. This trend aligns closely with AI-assisted workflows where iteration speed and reproducibility directly impact developer productivity. </p>
<p><strong>Here’s what this means in practice: </strong></p>
<ul class="wp-block-list">
<li>Fast installs and deterministic builds increasingly matter as much as feature depth.</li>
<li>Tools that reduce “works on my machine” moments are winning developer mindshare.</li>
</ul>
<h2 class="wp-block-heading" id="where-first-time-open-source-contributors-are-showing-up">Where first-time open source contributors are showing up</h2>
<p>As the developer population grows, understanding where first-time contributors show up (and why) becomes increasingly important. </p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" height="576" width="1024" src="https://github.blog/wp-content/uploads/2025/10/octoverse-2025-open-source-projects-attracting-most-first-time-contributors.jpg?resize=1024%2C576" alt="A chart showing the open source projects that attracted the most first-time contributors on GitHub in 2025. The top ten are microsoft/vscode, firstcontributions/first-contributions, home-assistant/core, slackblitz/bolt.new, flutter/flutter, zen-browser/desktop, is-a-dev/register, vllm-project/vllm, comfyanonymous/ComfyUI, and ollama/ollama. Displayed on a blue gradient background with green 3D ribbon graphics." class="wp-image-91623" srcset="https://github.blog/wp-content/uploads/2025/10/octoverse-2025-open-source-projects-attracting-most-first-time-contributors.jpg?w=1944 1944w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-open-source-projects-attracting-most-first-time-contributors.jpg?w=300 300w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-open-source-projects-attracting-most-first-time-contributors.jpg?w=768 768w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-open-source-projects-attracting-most-first-time-contributors.jpg?w=1024 1024w, https://github.blog/wp-content/uploads/2025/10/octoverse-2025-open-source-projects-attracting-most-first-time-contributors.jpg?w=1536 1536w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>
<p>Projects like <a href="https://github.com/microsoft/vscode">VS Code</a> and <a href="https://github.com/firstcontributions/first-contributions">First Contributions</a> continued to top the list over the last year, reflecting both the scale of widely used tools and the persistent need for low-friction entry points into open source (notably, we define contributions as any content-generating activity on GitHub).</p>
<p>Despite this growth, basic project governance remains uneven across the ecosystem. README files are common, but contributor guides and codes of conduct are still relatively rare even as first-time contributions increase.</p>
<p>This gap represents one of the highest-leverage improvements maintainers and open source communities can make. The fact that most of the projects on this list have detailed documentation on what the project is and how to contribute shows the importance of this guidance.</p>
<p><strong>Here’s what this means in practice: </strong></p>
<ul class="wp-block-list">
<li>Clear documentation lowers the cost of contribution more than new features.</li>
<li>Contributor guides and codes of conduct can help convert curiosity into sustained participation.</li>
<li>Improving project hygiene is often the fastest way to grow a contributor base.</li>
</ul>
<h2 class="wp-block-heading" id="putting-it-all-together">Putting it all together</h2>
<p>Taken together, these trends point to a shift in what developers value and how they choose tools. </p>
<p>AI is no longer a separate category of development. It’s shaping the languages teams use, which tools gain traction, and which projects attract contributors. </p>
<p>Typed languages like TypeScript are becoming the default for reliability at scale, while Python remains central to AI-driven systems as they move from prototypes into production. </p>
<p>Across the ecosystem, developers are rewarding tools that minimize friction with faster feedback loops, reproducible environments, and clearer contribution paths.</p>
<p>Developers and teams that optimize for speed, clarity, and reliability are shaping how software is being built.</p>
<p>As a reminder, you can check out <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">the full 2025 Octoverse report</a> for more information and make your own conclusions. There’s a lot of good data in there, and we’re just scratching the surface of what you can learn from it.</p>
</body></html>
<p>The post <a href="https://github.blog/news-insights/octoverse/what-the-fastest-growing-tools-reveal-about-how-software-is-being-built/">What the fastest-growing tools reveal about how software is being built</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
Easy FunctionGemma finetuning with Tunix on Google TPUs - Google Developers Bloghttps://developers.googleblog.com/easy-functiongemma-finetuning-with-tunix-on-google-tpus/2026-02-03T10:30:00.000ZFinetuning the FunctionGemma model is made fast and easy using the lightweight JAX-based Tunix library on Google TPUs, a process demonstrated here using LoRA for supervised finetuning. This approach delivers significant accuracy improvements with high TPU efficiency, culminating in a model ready for deployment.How to maximize GitHub Copilot’s agentic capabilities - The GitHub Bloghttps://github.blog/?p=935422026-02-02T17:00:00.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Modern engineering work rarely lives in a single file. Real systems evolve across years of incrementally layered decisions—some good, some accidental. A single feature request (“Add tagging to notes,” “Refactor the validation layer,” “Support a new consumer on our API”) often touches controllers, domain models, repositories, migrations, tests, documentation, and deployment strategy.</p>
<p>Copilot’s agentic capabilities don’t replace your judgment in these situations—they amplify it. When used well, Copilot becomes a partner in system design, refactoring, modernization, and multi-file coordination.</p>
<p>This guide focuses on architecture-aware, multi-step workflows used every day by staff engineers, but written to be accessible for earlier-career engineers who want to understand <em>how</em> senior engineers think—and how Copilot can accelerate their own growth.</p>
<p>It draws on four <a href="https://learn.github.com/skills">GitHub Skills exercises</a> (linked below), and builds toward a complete, real-world scenario: extending a small modular Notes Service with a tagging subsystem, refactoring a validation layer, designing a safe migration, and modernizing tests.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<h2 class="wp-block-heading" id="h-before-you-start">Before you start</h2>
<p>You’ll get the most out of this guide if you have:</p>
<ul class="wp-block-list">
<li>GitHub Copilot with agent mode enabled</li>
<li>Some familiarity with service-layer architectures (Node, Python, Go—language doesn’t matter</li>
<li>Copy a GitHub Skills exercise template to your handle or organization (use the green “Copy Exercise” button)</li>
<li>A willingness to let Copilot propose solutions—and the judgment to inspect and challenge them</li>
</ul>
<p>If you’re earlier in your career, don’t worry. Each section explains <strong>why</strong> these patterns matter and how to practice them safely.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--1" style="border-top-width:4px">
<h2 class="wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5" id="h-learn-interactively-at-your-own-pace-with-github-skills" style="margin-top:0">Learn interactively at your own pace with GitHub Skills</h2>
<p>The following free modules map directly to the workflows in this guide:</p>
<ul class="wp-block-list">
<li><a href="https://github.com/skills/expand-your-team-with-copilot"><strong>Expand your team with Copilot</strong></a>: multi-step agentic execution</li>
<li><a href="https://github.com/skills/build-applications-w-copilot-agent-mode"><strong>Build applications with Copilot (agent mode)</strong></a>: task-driven code generation</li>
<li><a href="https://github.com/skills/modernize-your-legacy-code-with-github-copilot"><strong>Modernize your legacy codebases with Copilot</strong></a>: refactoring and migrations</li>
<li><a href="https://github.com/skills/customize-your-github-copilot-experience"><strong>Customize Your GitHub Copilot experience</strong></a>: Customize GitHub Copilot’s behavior with custom instructions, prompts, and custom agents for your specific development workflows</li>
</ul>
<p>Each one is designed to be forkable, inspectable, and safe for experimentation. You can also explore all our GitHub Skills courses below. </p>
<p><a href="https://learn.github.com/skills">Explore GitHub Skills ></a></p>
</aside>
<h2 class="wp-block-heading" id="using-copilot-for-system-design-and-decomposition-not-just-scaffolding">Using Copilot for system design and decomposition (not just scaffolding)</h2>
<p>Senior engineers rarely begin by writing code. They begin by identifying boundaries: domain logic, data access, interfaces, and how modules should interact.</p>
<p>Copilot agent mode can help by revealing structural issues and proposing architectures.</p>
<p><strong>Prompt:</strong></p>
<pre class="wp-block-code language-plaintext"><code>Analyze this service and propose a modular decomposition with domain, infrastructure, and interface layers.
Identify anti-patterns, coupling issues, and potential failure points.</code></pre>
<p>You’ll typically get back:</p>
<ul class="wp-block-list">
<li>Proposed module boundaries</li>
<li>Cross-layer coupling concerns</li>
<li>Async/transaction pitfalls</li>
<li>Duplication or tight weaving of responsibilities</li>
<li>Testability and observability implications</li>
</ul>
<p>This transforms Copilot from an autocomplete tool into a design reviewer.</p>
<p>You can push further by asking it to compare architectures:</p>
<pre class="wp-block-code language-plaintext"><code>Compare hexagonal architecture vs. layered architecture for this codebase.
Recommend one based on the constraints here. Include tradeoffs.</code></pre>
<p>Want to try it yourself? Use these proposals as starting points.</p>
<h2 class="wp-block-heading" id="building-a-modular-service-using-agentic-workflows">Building a modular service using agentic workflows</h2>
<p>Once boundaries are defined, Copilot can coordinate changes across modules.</p>
<p><strong>Prompt</strong>:</p>
<pre class="wp-block-code language-plaintext"><code>Implement the domain, controller, and repository layers as distinct modules.
Use dependency inversion to reduce coupling.
Document assumptions and contracts for each module.</code></pre>
<p>Copilot will typically generate:</p>
<ul class="wp-block-list">
<li>Domain model interfaces</li>
<li>Repository abstractions</li>
<li>Controller logic calling domain services</li>
<li>A short Markdown summary describing each module</li>
</ul>
<p>For earlier-career engineers, this provides exposure to real engineering patterns. For senior engineers, it provides leverage and reduces boilerplate overhead.</p>
<h2 class="wp-block-heading" id="feature-work-with-architectural-awareness-example-tagging-subsystem">Feature work with architectural awareness (example: tagging subsystem)</h2>
<p>Adding a tagging subsystem is a deceptively simple request with meaningful architectural implications.</p>
<p>Even this single feature forces decisions across the system: </p>
<ul class="wp-block-list">
<li><strong>Data modeling: </strong>embedded tags vs. normalized tables vs. many-to-many relationships</li>
<li><strong>Search behavior: </strong>how tags affect indexing, filtering, and relevance</li>
<li><strong>API contracts: </strong>whether tags are first-class resources or an implementation detail</li>
<li><strong>Validation boundaries: </strong>where constraints and invariants are enforced</li>
<li><strong>Migration and rollout: </strong>additive vs. breaking changes and rollback strategy</li>
</ul>
<p>Before touching code, ask Copilot to map the impact.</p>
<p><strong>Prompt</strong>: </p>
<pre class="wp-block-code language-plaintext"><code>Propose the architectural changes required to add a tagging subsystem.
Identify migration needs, cross-cutting concerns, caching or indexing implications, and potential regressions.</code></pre>
<p>Copilot may identify:</p>
<ul class="wp-block-list">
<li>Tag–note relationships (one-to-many or many-to-many)</li>
<li>Migration strategy</li>
<li>Impact to search logic</li>
<li>Required test updates</li>
<li>Changes in validation logic</li>
<li>Implications on external API consumers</li>
</ul>
<p>This is the staff-level lens that Copilot can help junior developers adopt.</p>
<p><strong>Then implement it:</strong></p>
<pre class="wp-block-code language-plaintext"><code>Implement the tagging domain model, schema changes, repository updates, and controller logic.
Update tests and documentation. Show each change as a diff.</code></pre>
<p>Example output (simplified)</p>
<p><strong>Migration example:</strong></p>
<pre class="wp-block-code language-plaintext"><code>ALTER TABLE notes ADD COLUMN tags TEXT DEFAULT '[]';</code></pre>
<p><strong>Domain model example:</strong></p>
<pre class="wp-block-code"><code>export interface Tag {
id: string;
label: string;
}
export interface Note {
id: string;
title: string;
body: string;
tags: Tag[];
}</code></pre>
<p><strong>Controller update (partial):</strong></p>
<pre class="wp-block-code"><code>await noteService.addTag(noteId, { label: req.body.label });</code></pre>
<p>This is where agent mode shines: coordinating multiple files with consistent intent.</p>
<h2 class="wp-block-heading" id="schema-migrations-and-safe-rollout-strategies">Schema migrations and safe rollout strategies</h2>
<p>At senior levels, the hardest part isn’t writing SQL. It’s designing a change that is:</p>
<ul class="wp-block-list">
<li>Backward compatible</li>
<li>Reversible</li>
<li>Safe under load</li>
<li>Transparent to dependent systems</li>
</ul>
<p>Ask Copilot to reason about this:</p>
<p><strong>Prompt:</strong></p>
<pre class="wp-block-code language-plaintext"><code>Generate an additive, backward-compatible schema migration to support the tagging subsystem.
Describe the rollback plan, compatibility window, and expected impact to existing clients.</code></pre>
<p>This forces Copilot to consider:</p>
<ul class="wp-block-list">
<li>Mon-breaking additive fields</li>
<li>Optional fields vs. required fields</li>
<li>Whether a dual-read or dual-write strategy is needed</li>
<li>Safe rollback procedures</li>
<li>API versioning implications</li>
</ul>
<p>If you’re earlier in your career, this offers lessons on how safe migrations are designed. And if you’re more experienced, this gives you a repeatable workflow for multi-step schema evolution.</p>
<h2 class="wp-block-heading" id="advanced-refactoring-with-agentic-workflows">Advanced refactoring with agentic workflows</h2>
<p>Let’s perform a real cross-module refactor: extracting validation out of controllers into a domain service.</p>
<p><strong>Prompt:</strong></p>
<pre class="wp-block-code language-plaintext"><code>Create a step-by-step refactor plan to extract validation logic into a domain service.
Identify affected modules and required test updates.</code></pre>
<p>Copilot may output something like:</p>
<ol class="wp-block-list">
<li>Introduce domain <code>validationService</code></li>
<li>Move validation logic from controller to service</li>
<li>Update controllers to use new service</li>
<li>Update repository logic where validation assumptions leak</li>
<li>Update domain tests</li>
<li>Update integration tests</li>
</ol>
<h3 class="wp-block-heading" id="execute-in-incremental-steps">Execute in incremental steps</h3>
<p><strong>Prompt:</strong></p>
<pre class="wp-block-code language-plaintext"><code>Execute steps 1–3 only. Stop before controller rewrites.
Provide detailed diffs and call out risky areas.</code></pre>
<p>This is a low-blast-radius refactor, modeled directly in the IDE.</p>
<h2 class="wp-block-heading" id="modernizing-test-strategy">Modernizing test strategy</h2>
<p>Instead of asking Copilot “write tests,” ask it to assess the entire suite.</p>
<p><strong>Prompt:</strong></p>
<pre class="wp-block-code language-plaintext"><code>Analyze the current test suite and identify systemic gaps.
Recommend a modernization plan including contract, integration, and domain-layer tests.</code></pre>
<p><strong>Then implement contract tests:</strong></p>
<pre class="wp-block-code"><code>describe("NotesRepository contract", () => {
test("create + fetch returns a fully hydrated note object", async () => {
const note = await notesRepo.create({ title: "Test", body: "…" });
const fetched = await notesRepo.get(note.id);
expect(fetched).toMatchObject({ title: "Test" });
expect(fetched.id).toBeDefined();
});
});</code></pre>
<p>This elevates testing into an architectural concern.</p>
<h2 class="wp-block-heading" id="a-complete-end-to-end-workflow">A complete end-to-end workflow</h2>
<p>Bringing it all together, here’s a real sequence you might run with Copilot:</p>
<ol class="wp-block-list">
<li><strong>Ask Copilot to analyze the existing architecture: </strong>identify hazards, modularization opportunities</li>
<li><strong>Define module boundaries: </strong>domain, repository, controller layers</li>
<li><strong>Add tagging subsystem: </strong>architectural assessment to implementation to tests to doc updates</li>
<li><strong>Create a backward-compatible migration: </strong>additive schema to rollback plan</li>
<li><strong>Perform a targeted refactor: </strong>validation layer extraction</li>
<li><strong>Modernize tests: </strong>contract + integration + domain tests</li>
</ol>
<p>This workflow is architecturally realistic—and a model for how Copilot becomes a system-level collaborator.</p>
<h2 class="wp-block-heading" id="what-agent-mode-is-not-for">What agent mode is <em>not</em> for</h2>
<p>It’s important to clarify that agent mode is not ideal for:</p>
<ul class="wp-block-list">
<li>Altering domain invariants without human review</li>
<li>Redesigning cross-service ownership boundaries</li>
<li>Replacing logic driven by institutional knowledge</li>
<li>Large sweeping rewrites across hundreds of files</li>
<li>Debugging deep runtime issues</li>
</ul>
<p>Copilot should <em>support</em> your decision-making, not replace it.</p>
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--2" style="border-top-width:4px">
<h2 class="wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5" id="h-key-takeaways" style="margin-top:0">Key takeaways</h2>
<ul class="wp-block-list">
<li>Agent mode excels at <strong>multi-step, multi-file engineering workflows</strong>.</li>
<li>Copilot is a <strong>design and coordination partner</strong>, not a replacement for judgment.</li>
<li>Use Copilot for decomposition, refactoring, migrations, test strategy, and documentation.</li>
<li>Start with architecture, not implementation.</li>
<li>You can safely practice all these patterns in GitHub Skills.</li>
</ul>
<p><a href="https://github.blog/ai-and-ml/github-copilot/agent-mode-101-all-about-github-copilots-powerful-mode/">Learn more about agent mode ></a></p>
</aside>
<h2 class="wp-block-heading" id="where-to-go-next">Where to go next</h2>
<p>Here’s where GitHub Skills comes in—not as “beginner content,” but as a set of guided, self-contained labs that reinforce the patterns above. </p>
<p>Even senior engineers will benefit: These exercises are structured so you can reliably recreate complex workflows and test Copilot’s behavior in controlled environments.</p>
<div class="wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<p><a href="https://learn.github.com/skills">Explore GitHub Skills ></a></p>
</div>
</body></html>
<p>The post <a href="https://github.blog/ai-and-ml/github-copilot/how-to-maximize-github-copilots-agentic-capabilities/">How to maximize GitHub Copilot’s agentic capabilities</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>
Beyond the Chatbot: A Blueprint for Trustable AI - Google Developers Bloghttps://developers.googleblog.com/beyond-the-chatbot-a-blueprint-for-trustable-ai/2026-01-29T09:17:29.000ZAt Thunderhill Raceway Park, a team of Google Developer Experts (GDEs) put a new "Trustable AI Framework" to the test. Here is how they used GCP, Gemini and Antigravity to turn high-velocity racing into a masterclass for agentic architecture.LiteRT: The Universal Framework for On-Device AI - Google Developers Bloghttps://developers.googleblog.com/litert-the-universal-framework-for-on-device-ai/2026-01-28T17:02:29.000ZLiteRT, the evolution of TFLite, is now the universal framework for on-device AI. It delivers up to 1.4x faster GPU, new NPU support, and streamlined GenAI deployment for models like Gemma.From pixels to characters: The engineering behind GitHub Copilot CLI’s animated ASCII banner - The GitHub Bloghttps://github.blog/?p=934642026-01-28T17:00:00.000Z<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Most people think ASCII art is simple, and a nostalgic remnant of the early internet. But when the GitHub Copilot CLI team asked for a small entrance banner for the new command-line experience, they discovered the opposite: An ASCII animation in a real-world terminal is one of the most constrained UI engineering problems you can take on.</p>
<p>Part of what makes this even more interesting is the moment we’re in. Over the past year, CLIs have seen a surge of investment as AI-assisted and agentic workflows move directly into the terminal. But unlike the web—where design systems, accessibility standards, and rendering models are well-established—the CLI world is still fragmented. Terminals behave differently, have few shared standards, and offer almost no consistent accessibility guidelines. That reality shaped every engineering decision in this project.</p>
<p>Different terminals interpret ANSI color codes differently. Screen readers treat fast-changing characters as noise. Layout engines vary. Buffers flicker. Some users override global colors for accessibility. Others throttle redraw speed. There is no canvas, no compositor, no consistent rendering model, and no standard animation framework.</p>
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--1" style="border-top-width:4px">
<h3 class="wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5" id="h-by-the-numbers" style="margin-top:0">By the numbers</h3>
<ul class="wp-block-list">
<li>3 seconds of animation</li>
<li>~20 frames</li>
<li>~6,000 lines of TypeScript</li>
<li>Dozens of terminal + theme combinations tested</li>
</ul>
</aside>
<p>So when an animated Copilot mascot flying into the terminal appeared, it looked playful. But behind it was serious engineering work, unexpected complexity, a custom design toolchain, and a tight pairing between a designer and a long-time CLI engineer.</p>
<p>That complexity only became fully visible once the system was built. In the end, animating a three-second ASCII banner required over 6,000 lines of TypeScript—most of it dedicated not to visuals, but to handling terminal inconsistencies, accessibility constraints, and maintainable rendering logic.</p>
<p>This is the technical story of how it came together.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="How a designer built an ASCII animation tool with GitHub Copilot" width="500" height="281" src="https://www.youtube.com/embed/Lxi66vm5hP0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<aside data-color-mode="light" data-dark-theme="dark" data-light-theme="light_dimmed" class="wp-block-group post-aside--large p-4 p-md-6 is-style-light-dimmed has-global-padding is-layout-constrained wp-block-group-is-layout-constrained is-style-light-dimmed--2" style="border-top-width:4px">
<h2 class="wp-block-heading h5-mktg gh-aside-title is-typography-preset-h5" id="h-what-s-new-in-github-copilot-cli" style="margin-top:0">📦 What’s new in GitHub Copilot CLI</h2>
<p>GitHub Copilot CLI brings agentic workflows directly into your terminal—letting you plan projects, modify files, run commands, use custom agents, and delegate tasks to the cloud, all without leaving the CLI.</p>
<p>Since its introduction, Copilot CLI has expanded to support richer, more flexible agentic workflows:</p>
<ul class="wp-block-list">
<li><strong>Works the way you do</strong> with persistent memory, infinite sessions, and intelligent compaction</li>
<li><strong>Helps you think</strong> using explore, plan, and review workflows where you can choose the model at each step</li>
<li><strong>Executes on your behalf</strong> with custom agents, agent skills, full MCP support, and async task delegation</li>
</ul>
<p><strong>Want to bring these same agentic capabilities into your own tools or products?</strong> <a href="https://github.com/github/copilot-sdk/">The GitHub Copilot SDK</a> exposes the same execution loop that powers Copilot CLI, so you can embed agents into any application using your Copilot subscription or your own model keys.</p>
<p><a href="https://github.blog/news-insights/company-news/build-an-agent-into-any-app-with-the-github-copilot-sdk/?utm_source=blog-announcement-cli-sdk&utm_medium=&utm_campaign=cli-sdk-jan-2026"><strong>Learn more about the Copilot SDK ></strong></a></p>
</aside>
<h2 class="wp-block-heading" id="h-why-animated-ascii-is-a-hard-engineering-problem">Why animated ASCII is a hard engineering problem</h2>
<figure class="wp-block-video"><video height="1024" style="aspect-ratio: 1492 / 1024;" width="1492" controls poster="https://github.blog/wp-content/uploads/2026/01/cli.png" src="https://github.blog/wp-content/uploads/2026/01/Banner.mp4"></video></figure>
<p>Before diving into the build process, it’s worth calling out why this problem space is more advanced than it looks.</p>
<h3 class="wp-block-heading" id="terminals-dont-have-a-canvas">Terminals don’t have a canvas</h3>
<p>Unlike browsers (DOM), native apps (views), or graphics frameworks (GPU surfaces), terminals treat output as a <em>stream of characters</em>. There’s no native concept of:</p>
<ul class="wp-block-list">
<li>Frames</li>
<li>Sprites</li>
<li>Z-index</li>
<li>Rasterized pixels</li>
<li>Animation tick rates</li>
</ul>
<p>Because of this, every “frame” has to be manually repainted using cursor movements and redraw commands. There’s no compositor smoothing anything over behind the scenes. Everything is stdout writes + ANSI control sequences.</p>
<h3 class="wp-block-heading" id="ansi-escape-codes-are-inconsistent-and-terminal-color-is-its-own-engineering-challenge">ANSI escape codes are inconsistent, and terminal color is its own engineering challenge</h3>
<p>ANSI escape codes like <code>\x1b[35m</code> (bright magenta) or <code>\x1b[H</code> (cursor home) behave differently across terminals—not just in how they render, but in <em>whether they’re supported at all</em>. Some environments (like Windows Command Prompt or older versions of PowerShell) have limited or no ANSI support without extra configuration.</p>
<p>But even in terminals that do support ANSI, the hardest part isn’t the cursor movement. It’s the colors.</p>
<p>When you’re building a CLI, you realistically have three approaches:</p>
<ol class="wp-block-list">
<li><strong>Use no color at all. </strong>This guarantees broad compatibility, but makes it harder to highlight meaning or guide users’ attention—especially in dense CLI output.</li>
<li><strong>Use richer color modes (3-bit, 4-bit, 8-bit, or truecolor)</strong> that aren’t uniformly supported or customizable. This introduces a maintenance headache: Different terminals, themes, and accessibility profiles render the same color codes differently, and users often disagree about what “good” colors look like.</li>
<li><strong>Use a minimal, customizable palette (usually 4-bit colors)</strong> that most terminals allow users to override in their preferences. This is the safest path, but it limits how accurately you can represent a brand palette—and it forces you to design for environments with widely varying contrast and theme choices.</li>
</ol>
<p>For the Copilot CLI animation, this meant treating color as a <em>semantic</em> system, not a literal one: Instead of committing specific RGB values, the team mapped high-level “roles” (eyes, goggles, shadow, border) to ANSI colors that degrade gracefully across different terminals and accessibility settings.</p>
<h3 class="wp-block-heading" id="accessibility-is-a-first-class-concern">Accessibility is a first-class concern</h3>
<p>Terminals are used by developers with a wide range of visual abilities—not just blind users with screen readers, but also low-vision users, color-blind users, and anyone working in high-contrast or customized themes.</p>
<p>That means:</p>
<ul class="wp-block-list">
<li>Rapid re-renders can create auditory clutter for screen readers</li>
<li>Color-based meaning must degrade safely, since bold, dim, or subtle hues may not be perceivable</li>
<li>Low-vision users may not see contrast differences that designers expect</li>
<li>Animations must be opt-in, not automatic</li>
<li>Clearing sequences must avoid confusing assistive technologies</li>
</ul>
<p>This is also why the Copilot CLI animation ended up behind an opt-in flag early on—accessibility constraints shaped the architecture from the start. </p>
<p>These constraints guided every decision in the Copilot CLI animation. The banner had to work when colors were overridden, when contrast was limited, and even when the animation itself wasn’t visible.</p>
<h3 class="wp-block-heading" id="ink-react-for-the-terminal-helps-but-its-not-an-animation-engine">Ink (React for the terminal) helps, but it’s not an animation engine</h3>
<p><a href="https://github.com/vadimdemedes/ink">Ink</a> lets you build terminal interfaces using React components, but:</p>
<ul class="wp-block-list">
<li>It re-renders on every state change</li>
<li>It doesn’t manage frame deltas</li>
<li>It doesn’t synchronize with terminal paint cycles</li>
<li>It doesn’t solve flicker or cursor ghosting</li>
</ul>
<p>Which meant animation logic had to be handcrafted.</p>
<h3 class="wp-block-heading" id="frame-based-ascii-animation-has-no-existing-workflow-for-designers">Frame-based ASCII animation has no existing workflow for designers</h3>
<p>There are tools for ASCII art, but virtually none for:</p>
<ul class="wp-block-list">
<li>Frame-by-frame editing</li>
<li>Multi-color ANSI previews</li>
<li>Exporting color roles</li>
<li>Generating Ink-ready components</li>
<li>Testing contrast and accessibility</li>
</ul>
<p>Even existing ANSI preview tools don’t simulate how different terminals remap colors or handle cursor updates, which makes accurate design iteration almost impossible without custom tooling. So the team had to build one.</p>
<h2 class="wp-block-heading" id="part-1-a-request-that-didnt-fit-any-workflow">Part 1: A request that didn’t fit any workflow</h2>
<p>Cameron Foxly (<a href="https://github.com/cameronfoxly">@cameronfoxly</a>), a brand designer at GitHub with a background in animation, was asked to create a banner for the Copilot CLI.</p>
<p>“Normally, I’d build something in After Effects and hand off assets,” Cameron said. “But engineers didn’t have the time to manually translate animation frames into a CLI. And honestly, I wanted something more fun.”</p>
<p>He’d seen the static ASCII intro in Claude Code and knew Copilot deserved more personality.</p>
<p>The 3D Copilot mascot flying in to reveal the CLI logo felt right. But after attempting to create just <em>one</em> frame manually, the idea quickly ran into reality.</p>
<p>“It was a nightmare,” Cameron said. “If this is going to exist, I need to build my own tool.”</p>
<h2 class="wp-block-heading" id="part-2-building-an-ascii-animation-editor-from-scratch">Part 2: Building an ASCII animation editor from scratch</h2>
<p>Cameron opened an empty repository in VS Code, and began asking GitHub Copilot for help scaffolding an animation MVP that could:</p>
<ul class="wp-block-list">
<li>Read text files as frames</li>
<li>Render them sequentially</li>
<li>Control timing</li>
<li>Clear the screen without flicker</li>
<li>Add a primitive “UI”</li>
</ul>
<p>Within an hour, he had a working prototype that was monochrome, but functional.</p>
<h3 class="wp-block-heading" id="simplified-early-animation-loop">Simplified early animation loop</h3>
<p>Below is a simplified example variation of the frame loop logic Cameron prototyped:</p>
<pre class="wp-block-code"><code>import fs from "fs";
import readline from "readline";
/**
* Load ASCII frames from a directory.
*/
const frames = fs
.readdirSync("./frames")
.filter(f => f.endsWith(".txt"))
.map(f => fs.readFileSync(`./frames/${f}`, "utf8"));
let current = 0;
function render() {
// Move cursor to top-left of terminal
readline.cursorTo(process.stdout, 0, 0);
// Clear the screen below the cursor
readline.clearScreenDown(process.stdout);
// Write the current frame
process.stdout.write(frames[current]);
// Advance to next frame
current = (current + 1) % frames.length;
}
// 75ms = ~13fps. Higher can cause flicker in some terminals.
setInterval(render, 75);</code></pre>
<p>This introduced the first major obstacle: color. The prototype worked in monochrome, but the moment color was added, inconsistencies across terminals—and accessibility constraints—became the dominant engineering problem.</p>
<h2 class="wp-block-heading" id="part-3-ansi-color-theory-and-the-real-world-limitations">Part 3: ANSI color theory and the real-world limitations</h2>
<p>The Copilot brand palette is vibrant and high-contrast, which is great for web but exceptionally challenging for terminals.</p>
<p>ANSI terminals support:</p>
<ul class="wp-block-list">
<li>16-color mode (standard)</li>
<li>256-color mode (extended)</li>
<li>Sometimes truecolor (“24-bit”) but inconsistently</li>
</ul>
<p>Even in 256-color mode, terminals remap colors based on:</p>
<ul class="wp-block-list">
<li>User themes</li>
<li>Accessibility settings</li>
<li>High-contrast modes</li>
<li>Light/dark backgrounds</li>
<li>OS-level overrides</li>
</ul>
<p>Which means you can’t rely on exact hues. You have to design with variability in mind.</p>
<p>Cameron needed a way to paint characters with ANSI color roles while previewing how they look in different terminals.</p>
<p>He took a screenshot of the <a href="https://en.wikipedia.org/wiki/ANSI_escape_code#Colors">Wikipedia ANSI table</a>, handed it to Copilot, and asked it to scaffold a palette UI for his tool.</p>
<h2 class="wp-block-heading" id="adding-a-color-brush-tool">Adding a color “brush” tool</h2>
<p>A simplified version:</p>
<pre class="wp-block-code"><code>function applyColor(char, color) {
// Minimal example: real implementation needed support for roles,
// contrast testing, and multiple ANSI modes.
const codes = {
magenta: "\x1b[35m",
cyan: "\x1b[36m",
white: "\x1b[37m"
};
return `${codes[color]}${char}\x1b[0m`; // Reset after each char
}</code></pre>
<p>This enabled Cameron to paint ANSI-colored ASCII like you would in Photoshop, one character at a time.</p>
<figure class="wp-block-video"><video height="1728" style="aspect-ratio: 2176 / 1728;" width="2176" controls poster="https://github.blog/wp-content/uploads/2026/01/app1-poster.png" src="https://github.blog/wp-content/uploads/2026/01/firstApp.mov"></video></figure>
<p>But now he had to export it into the real Copilot CLI codebase.</p>
<h2 class="wp-block-heading" id="part-4-exporting-to-ink-react-for-the-terminal">Part 4: Exporting to Ink (React for the terminal)</h2>
<p><a href="https://github.com/vadimdemedes/ink">Ink</a> is a React renderer for building CLIs using JSX components. Instead of writing to the DOM, components render to stdout.</p>
<p>Cameron asked Copilot to help generate an Ink component that would:</p>
<ul class="wp-block-list">
<li>Accept frames</li>
<li>Render them line-by-line</li>
<li>Animate them with state updates</li>
<li>Integrate cleanly into the CLI codebase</li>
</ul>
<h3 class="wp-block-heading" id="simplified-ink-frame-renderer">Simplified Ink frame renderer</h3>
<pre class="wp-block-code"><code>import React from "react";
import { Box, Text } from "ink";
/**
* Render a single ASCII frame.
*/
export const CopilotBanner = ({ frame }) => (
<Box flexDirection="column">
{frame.split("\n").map((line, i) => (
<Text key={i}>{line}</Text>
))}
</Box>
);</code></pre>
<p>And a minimal animation wrapper:</p>
<pre class="wp-block-code"><code>export const AnimatedBanner = () => {
const [i, setI] = React.useState(0);
React.useEffect(() => {
const id = setInterval(() => setI(x => (x + 1) % frames.length), 75);
return () => clearInterval(id);
}, []);
return <CopilotBanner frame={frames[i]} />;
};</code></pre>
<p>This gave Cameron the confidence to open a pull request (his first engineering pull request in nine years at GitHub).</p>
<p>“Copilot filled in syntax I didn’t know,” Cameron said. “But I still made all the architectural decisions.”</p>
<p>Now it was time for the engineering team to turn a prototype into something production-worthy.</p>
<h2 class="wp-block-heading" id="part-5-terminal-animation-isnt-solved-technology">Part 5: Terminal animation isn’t solved technology</h2>
<p>Andy Feller (<a href="https://github.com/andyfeller">@andyfeller</a>), a long-time GitHub engineer behind the GitHub CLI, partnered with Cameron to bring the animation into the Copilot CLI codebase.</p>
<p>Unlike browsers—which share rendering engines, accessibility APIs, and standards like WCAG—terminal environments are a patchwork of behaviors inherited from decades-old hardware like the VT100. There’s no DOM, no semantic structure, and only partial agreement on capabilities across terminals. This makes even “simple” UI design problems in the terminal uniquely challenging, especially as AI-driven workflows push CLIs into daily use for more developers.</p>
<p>“There’s no framework for terminal animations,” Andy explained. “We had to figure out how to do this without flickering, without breaking accessibility, and across wildly different terminals.”</p>
<p>Andy broke the engineering challenges into four broad categories:</p>
<h3 class="wp-block-heading" id="challenge-1-from-banner-to-ready-without-flickering">Challenge 1: From banner to ready without flickering</h3>
<p>Most terminals repaint the entire viewport when new content arrives. At the same time, CLIs come with a strict usability expectation: when developers run a command, they want to get to work immediately. Any animation that flickers, blocks input, or lingers too long actively degrades the experience.</p>
<p>This created a core tension the team had to resolve: how to introduce a brief, animated banner without slowing startup, stealing focus, or destabilizing the terminal render loop.</p>
<p>In practice, this was complicated by the fact that terminals behave differently under load. Some:</p>
<ul class="wp-block-list">
<li>Throttle fast writes</li>
<li>Reveal cleared frames momentarily</li>
<li>Buffer output differently</li>
<li>Repaint the cursor region inconsistently</li>
</ul>
<p>To avoid flicker while keeping the CLI responsive across popular terminals like iTerm2, Windows Terminal, and VS Code, the team had to carefully coordinate several interdependent concerns:</p>
<ul class="wp-block-list">
<li>Keeping the animation under three seconds so it never delayed user interaction</li>
<li>Separating static and non-static components to minimize unnecessary redraws</li>
<li>Initializing MCP servers, custom agents, and user setup without blocking render</li>
<li>Working within Ink’s asynchronous re-rendering model</li>
</ul>
<p>The result was an animation treated as a non-blocking, best-effort enhancement—visible when it could be rendered safely, but never at the expense of startup performance or usability.</p>
<h3 class="wp-block-heading" id="challenge-2-brand-color-mapping-in-ansi">Challenge 2: Brand color mapping in ANSI</h3>
<p>“ANSI color consistency simply doesn’t exist,” Andy said. </p>
<p>Most modern terminals support 8-bit color, allowing CLIs to choose from 256 colors. However, how those colors are actually rendered varies widely based on terminal themes, OS settings, and user accessibility overrides. In practice, CLIs can’t rely on exact hues—or even consistent contrast—across environments.</p>
<p>The Copilot banner introduced an additional complexity: although it’s rendered using text characters, the block-letter Copilot logo functions as a <strong>graphical object</strong>, not readable body text. Under accessibility guidelines, non-text graphical elements have different contrast requirements than text, and they must remain perceivable without relying on fine detail or precise color matching.</p>
<p>To account for this, the team deliberately chose a minimal 4-bit ANSI palette—one of the few color modes most terminals allow users to customize—to ensure the animation remained legible under high-contrast themes, low-vision settings, and color overrides.</p>
<p>This meant the team had to:</p>
<ul class="wp-block-list">
<li>Treat the Copilot wordmark as non-text graphical content with appropriate contrast requirements</li>
<li>Select ANSI color codes that <em>approximate</em> the Copilot palette without relying on exact hues</li>
<li>Satisfy WCAG contrast guidance for both text and non-text elements</li>
<li>Ensure the animation remained legible in light and dark terminals</li>
<li>Degrade gracefully when users override terminal colors for accessibility</li>
<li>Test color combinations across multiple terminal emulators and theme configurations</li>
</ul>
<p>Rather than encoding brand colors directly, the animation maps semantic roles—such as borders, eyes, highlights, and text—to ANSI color slots that terminals can reinterpret safely. This allows the banner to remain recognizable without assuming control over the user’s color environment.</p>
<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="872" height="246" src="https://github.blog/wp-content/uploads/2026/01/banner1.png?resize=872%2C246" alt="Dark mode version of the GitHub Copilot CLI banner." class="wp-image-93470" srcset="https://github.blog/wp-content/uploads/2026/01/banner1.png?w=872 872w, https://github.blog/wp-content/uploads/2026/01/banner1.png?w=300 300w, https://github.blog/wp-content/uploads/2026/01/banner1.png?w=768 768w" sizes="(max-width: 872px) 100vw, 872px" /></figure>
<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="869" height="242" src="https://github.blog/wp-content/uploads/2026/01/banner2.png?resize=869%2C242" alt="Light mode version of the GitHub Copilot CLI banner." class="wp-image-93471" srcset="https://github.blog/wp-content/uploads/2026/01/banner2.png?w=869 869w, https://github.blog/wp-content/uploads/2026/01/banner2.png?w=300 300w, https://github.blog/wp-content/uploads/2026/01/banner2.png?w=768 768w" sizes="(max-width: 869px) 100vw, 869px" /></figure>
<h3 class="wp-block-heading" id="challenge-3-making-the-animation-maintainable">Challenge 3: Making the animation maintainable</h3>
<p>Cameron’s prototype was a great starting point for Andy to incorporate into the Copilot CLI but it wasn’t without its challenges:</p>
<ul class="wp-block-list">
<li>Banner consisted of ~20 animation frames covering an 11×78 area</li>
<li>There are ~10 animation elements to stylize in any given frame</li>
<li>Needed a way to separate the text of the frame from the colors involved</li>
<li>Each frame mapped hard coded colors to row and column coordinates</li>
<li>Each frame required precise timing to display Cameron’s vision</li>
</ul>
<p>First, the animation was broken down into distinct animation elements that could be used to create separate light and dark themes:</p>
<pre class="wp-block-code"><code>type AnimationElements =
| "block_text"
| "block_shadow"
| "border"
| "eyes"
| "head"
| "goggles"
| "shine"
| "stars"
| "text";
type AnimationTheme = Record<AnimationElements, ANSIColors>;
const ANIMATION_ANSI_DARK: AnimationTheme = {
block_text: "cyan",
block_shadow: "white",
border: "white",
eyes: "greenBright",
head: "magentaBright",
goggles: "cyanBright",
shine: "whiteBright",
stars: "yellowBright",
text: "whiteBright",
};
const ANIMATION_ANSI_LIGHT: AnimationTheme = {
block_text: "blue",
block_shadow: "blackBright",
border: "blackBright",
eyes: "green",
head: "magenta",
goggles: "cyan",
shine: "whiteBright",
stars: "yellow",
text: "black",
};</code></pre>
<p>Next, the overall animation and subsequent frames would capture content, color, duration needed to animate the banner:</p>
<pre class="wp-block-code"><code>interface AnimationFrame {
title: string;
duration: number;
content: string;
colors?: Record<string, AnimationElements>; // Map of "row,col" positions to animation elements
}
interface Animation {
metadata: {
id: string;
name: string;
description: string;
};
frames: AnimationFrame[];
}</code></pre>
<p>Then, each animation frame was captured to separate frame content from stylistic and animation details, resulting in over 6,000 lines of TypeScript to safely animate three seconds of the Copilot logo across terminals with wildly different rendering and accessibility behaviors:</p>
<pre class="wp-block-code"><code> const frames: AnimationFrame[] = [
{
title: "Frame 1",
duration: 80,
content: `
┌┐
││
││
└┘`,
colors: {
"1,0": "border",
"1,1": "border",
"2,0": "border",
"2,1": "border",
"10,0": "border",
"10,1": "border",
"11,0": "border",
"11,1": "border",
},
},
{
title: "Frame 2",
duration: 80,
content: `
┌── ──┐
│ │
█▄▄▄
███▀█
███ ▐▌
███ ▐▌
▀▀█▌
▐ ▌
▐
│█▄▄▌ │
└▀▀▀ ──┘`,
colors: {
"1,0": "border",
"1,1": "border",
"1,2": "border",
"1,8": "border",
"1,9": "border",
"1,10": "border",
"2,0": "border",
"2,10": "border",
"3,1": "head",
"3,2": "head",
"3,3": "head",
"3,4": "head",
"4,1": "head",
"4,2": "head",
"4,3": "goggles",
"4,4": "goggles",
"4,5": "goggles",
"5,1": "head",
"5,2": "goggles",
"5,3": "goggles",
"5,5": "goggles",
"5,6": "goggles",
"6,1": "head",
"6,2": "goggles",
"6,3": "goggles",
"6,5": "goggles",
"6,6": "goggles",
"7,3": "goggles",
"7,4": "goggles",
"7,5": "goggles",
"7,6": "goggles",
"8,3": "eyes",
"8,5": "head",
"9,4": "head",
"10,0": "border",
"10,1": "head",
"10,2": "head",
"10,3": "head",
"10,4": "head",
"10,10": "border",
"11,0": "border",
"11,1": "head",
"11,2": "head",
"11,3": "head",
"11,8": "border",
"11,9": "border",
"11,10": "border",
},
},</code></pre>
<p>Finally, each animation frame is rendered building segments of text based on consecutive color usage with the necessary ANSI escape codes:</p>
<pre class="wp-block-code"><code> {frameContent.map((line, rowIndex) => {
const truncatedLine = line.length > 80 ? line.substring(0, 80) : line;
const coloredChars = Array.from(truncatedLine).map((char, colIndex) => {
const color = getCharacterColor(rowIndex, colIndex, currentFrame, theme, hasDarkTerminalBackground);
return { char, color };
});
// Group consecutive characters with the same color
const segments: Array<{ text: string; color: string }> = [];
let currentSegment = { text: "", color: coloredChars[0]?.color || theme.COPILOT };
coloredChars.forEach(({ char, color }) => {
if (color === currentSegment.color) {
currentSegment.text += char;
} else {
if (currentSegment.text) segments.push(currentSegment);
currentSegment = { text: char, color };
}
});
if (currentSegment.text) segments.push(currentSegment);
return (
<Text key={rowIndex} wrap="truncate">
{segments.map((segment, segIndex) => (
<Text key={segIndex} color={segment.color}>
{segment.text}
</Text>
))}
</Text>
);
})}</code></pre>
<h2 class="wp-block-heading" id="challenge-4-accessibility-first-design">Challenge 4: Accessibility-first design</h2>
<p>The engineering team approached the banner with the same philosophy as the <a href="https://github.blog/engineering/user-experience/building-a-more-accessible-github-cli/">GitHub CLI’s accessibility work</a>:</p>
<ul class="wp-block-list">
<li>Respect global color overrides both in terminal and system preferences</li>
<li>After the first use, avoid animations unless explicitly enabled via the Copilot CLI configuration file</li>
<li>Minimize ANSI instructions that can confuse assistive tech</li>
</ul>
<p>“CLI accessibility is under researched,” Andy noted. “We’ve learned a lot from users who are blind as well as users with low vision, and those lessons shaped this project.”</p>
<p>Because of this, the animation is opt-in and gated behind its own flag—so it’s not something developers see by default. And when developers run the CLI in –screen-reader mode, the banner is automatically skipped so no decorative characters or motion are sent to assistive technologies.</p>
<h2 class="wp-block-heading" id="part-6-an-architecture-built-to-scale">Part 6: An architecture built to scale</h2>
<p>By the end of the refactor, the team had:</p>
<ul class="wp-block-list">
<li>Frames stored as plain text</li>
<li>Animation elements</li>
<li>Themes as simple mappings</li>
<li>A runtime colorization step</li>
<li>Ink-driven timing and rendering</li>
<li>A maintainable foundation for future animations</li>
</ul>
<p>This pattern—storing frames as plain text, layering semantic roles, and applying themes at runtime—isn’t specific to Copilot. It’s a reusable approach for anyone building terminal UIs or animations.</p>
<h2 class="wp-block-heading" id="part-7-what-this-project-reveals-about-building-for-the-terminal">Part 7: What this project reveals about building for the terminal</h2>
<p>A “simple ASCII banner” turned into:</p>
<ul class="wp-block-list">
<li>A frame-based animation tool that didn’t exist</li>
<li>A custom ANSI color palette strategy</li>
<li>A new Ink component</li>
<li>A maintainable rendering architecture</li>
<li>Accessibility-first CLI design choices</li>
<li>A designer’s first engineering contribution</li>
<li>Real-world testing across diverse terminals</li>
<li>Open source contributions from the community</li>
</ul>
<p>“The most rewarding part was stepping into open source for the first time,” Cameron said. “With Copilot, I was able to build out my MVP ASCII animation tool into a full open source app at <a href="http://ascii-motion.app">ascii-motion.app</a>,. Someone fixed a typo in my <a href="https://github.com/CameronFoxly/Ascii-Motion">README</a>, and it made my day.”</p>
<p>As Andy pointed out, building accessible experiences for CLIs is still largely unexplored territory and far behind the tooling and standards available for the web.</p>
<p>Today, developers are already contributing to Cameron’s ASCII Motion tool, and the Copilot CLI team can ship new animations without rebuilding the system.</p>
<p>This is what building for the terminal demands: deep understanding of constraints, discipline around accessibility, and the willingness to invent tooling where none exists.</p>
<h3 class="wp-block-heading" id="use-github-copilot-in-your-terminal">Use GitHub Copilot in your terminal</h3>
<p>The GitHub Copilot CLI brings AI-assisted workflows directly into your terminal — including commands for explaining code, generating files, refactoring, testing, and navigating unfamiliar projects.</p>
<div class="wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained">
<p><a href="https://github.com/features/copilot">Try GitHub Copilot CLI ></a></p>
</div>
</body></html>
<p>The post <a href="https://github.blog/engineering/from-pixels-to-characters-the-engineering-behind-github-copilot-clis-animated-ascii-banner/">From pixels to characters: The engineering behind GitHub Copilot CLI’s animated ASCII banner</a> appeared first on <a href="https://github.blog">The GitHub Blog</a>.</p>