I let Google's Jules AI agent into my code repo and it did four hours of work in an instant
hemul75/Getty ImagesOkay. Deep breath. This is surreal. I just added an entire new feature to my software, including UI and functionality, just by typing four paragraphs of instructions. I have screenshots, and I'll try to make sense of it in this article. I can't tell if we're living in the future or we've just descended to a new plane of hell.Let's take a step back. Google's Jules is the latest in a flood of new coding agents released just this week. I wrote about OpenAI Codex and Microsoft's GitHub Copilot Coding Agent at the beginning of the week, and ZDNET's Webb Wright wrote about Google's Jules. Also: I test a lot of AI coding tools, and this stunning new OpenAI release just saved me days of workAll of these coding agents will perform coding operations on a GitHub repository. GitHub, for those who've been following along, is the giant Microsoft-owned software storage, management, and distribution hub for much of the world's most important software, especially open source code. The difference, at least as it pertains to this article, is that Google made Jules available to everyone, for free. That meant I could just hop in and take it for a spin. And now my head is spinning. Usage limits and my first two prompts The free access version of Jules allows only five requests per day. That might not seem like a lot, but in only two requests, I was able to add a new feature to my software. So, don't discount what you can get done if you think through your prompts before shooting off your silver bullets for the day. My first two prompts were tentative. It wasn't that I wasn't impressed; it was that I really wasn't giving Jules much to do. I'm still not comfortable with the idea of setting an AI loose on all my code at once, so I played it safe. My first prompt asked Jules to document the "hooks" that add-on developers could use to add features to my product. I didn't tell Jules much about what I wanted. It returned some markup that it recommended dropping into my code's readme file. It worked, but meh. Screenshot by David Gewirtz/ZDNETI did have the opportunity to publish that code to a new GitHub branch, but I skipped it. It was just a test, after all. My second prompt was to ask Jules to suggest five new hooks. I got back an answer that seemed reasonable. However, I realized that opening up those capabilities in a security product was just too risky for me to delegate to an AI. I skipped those changes, too. It was at this point that Jules wanted a coffee break. It stopped functioning for about 90 minutes. Screenshot by David Gewirtz/ZDNETThat gave me time to think. What I really wanted to see was whether Jules could add some real functionality to my code and save me some time. Necessary background information My Private Site is a security plugin for WordPress. It's running on about 20,000 active sites. It puts a login dialog in front of the site's web pages. There are a bunch of options, but that's the key feature. I originally acquired the software a decade ago from a coder who called himself "jonradio," and have been maintaining and expanding it ever since. Also: Rust turns 10: How a broken elevator changed software foreverThe plugin provides access control to the front-end of a website, the pages that visitors see when they come to the site. Site owners control the plugin via a dashboard interface, with various admin functions available in the plugin's admin interface. I decided to try Jules out on a feature some users have requested, hiding the admin bar from logged-in users. The admin bar is the black bar WordPress puts on the top of a web page. In the case of the screenshot below, the black admin bar is visible. Screenshot by David Gewirtz/ZDNETI wanted Jules to add an option on the dashboard to hide the admin bar from logged-in users. The idea is that if a user logged in, the admin bar would be visible on the back end, but logged-in users browsing the front-end of the site wouldn't have to see the ugly bar. This is the original dashboard, before adding the new feature. Screenshot by David Gewirtz/ZDNETSome years ago, I completely rewrote the admin interface from the way it was when I acquired the plugin. Adding options to the interface is straightforward, but it's still time-consuming. Every option requires not only the UI element to be added, but also preference saving and preference recalling when the dashboard is displayed. That's in addition to any program logic that the preference controls. In practice, I've found that it takes me about 2-3 hours to add a preference UI element, along with the assorted housekeeping involved. It's not hard, but there are a lot of little fiddly bits that all need to be tweaked. That takes time. That should bring you up to speed enough to understand my next test of Jules. Here's a bit of foreshadowing: the first test failed miserably. The second test succeeded astonishingly. Instructing Jules Adding a hide admin bar feature is not something that would have been easy for the run-of-the-mill coding help we've been asking ChatGPT and the other chatbots to perform. As I mentioned, adding the new option to the dashboard requires programming in a variety of locations throughout the code, and also requires an understanding of the overall codebase. Here's what I told Jules. 1. On the Site Privacy Tab of the admin interface, add a new checkbox. Label the section "Admin Bar" and label the checkbox itself "Hide Admin Bar".I instructed Jules where I wanted the AI to put the new option. On my first run through, I made a mistake and left out the details in square brackets. I didn't tell Jules exactly where I wanted it to place the new option. As it turns out, that omission caused a big fail. Once I added in the sentence in brackets above, the feature worked. 2. Be sure to save the selection of that checkbox to the plugin's preferences variable when the Privacy Status button is checked. This makes sure Jules knows that there is a preference data structure, and to be sure to update it when the user makes a change. It's important to note that if I didn't have an understanding of the underlying code, I wouldn't have instructed Jules about this, and the code would not work. You can't "vibe code" something like this without knowing the underlying code. 3. Show the appropriate checked or unchecked status when the Site Privacy tab is displayed. This tells the AI that I want the interface to be updated to match what the preference variable specifies. 4. Based on the preference variable created in, add code to hide or show the WordPress admin bar. If Hide Admin Bar is checked, the Admin Bar should not be visible to logged-in WordPress front-end users. If the Hide Admin Bar is not checked, the Admin Bar should be visible to logged-in front-end users. Logged-in back-end users in the admin interface should always be able to see the admin bar. This describes the business logic that the new preference should control. It requires the AI to know how to hide or show the admin bar, and it requires the AI to know where to put the code in my plugin to enable or disable this feature. And with that, Jules was trained on what I wanted. Jules dives into my code I fed my prompt set into Jules and got back a plan of action. Pay close attention to that Approve Plan? button. Screenshot by David Gewirtz/ZDNETI didn't even get a chance to read through the plan before Jules decided to approve the plan on its own. It did this after every plan it presented. An AI that doesn't wait for permission raises the hairs on the back of my neck. Just saying. Screenshot by David Gewirtz/ZDNETI desperately want to make a Skynet/Landru/Colossus/P1/Hal kind of joke, because I'm freaked out. I mean, it's good. But I'm freaked out. Here's some of the code Jules wrote. The shaded green is the new stuff. I'm not thrilled with the color scheme, but I'm sure that will be tweakable over time. Also: The best free AI courses and certificates in 2025More relevant is the fact that Jules picked up on my variable naming conventions and the architecture of my code and dived right in. This is the new option, rendered in code. Screenshot by David Gewirtz/ZDNETBy the time it was done, Jules had written in all the code changes it planned for originally, plus some test code. I don't use standardized tests. I would have told Jules not to do it the way it planned, but it never gave me time to approve or modify its original plan. Even so, it worked out. Screenshot by David Gewirtz/ZDNETI pushed the Publish branch button, which caused GitHub to create a new branch, separate from my main repository. Jules then published its changes to that branch. Screenshot by David Gewirtz/ZDNETThis is how contributors to big projects can work on those projects without causing chaos to the main code line. Up to this point, I could look at the code, but I wasn't able to run it. But by pushing the code to a branch, Jules and GitHub made it possible for me to replicate the changes safely down to my computer to test them out. If I didn't like the changes, I could have just switched back to the main branch and no harm, no foul. But I did like the changes, so I moved on to the next step. Around the code in 8 clicks Once I brought the branch down to my development machine, I could test it out. Here's the new dashboard with the Hide Admin Menu feature. Screenshot by David Gewirtz/ZDNETI tried turning the feature on and off and making sure the settings stuck. They did. I also tried other features in the plugin to make sure nothing else had broken. I was pretty sure nothing would, because I reviewed all the changes before approving the branch. But still. Testing is a good thing to do. I then logged into the test website. As you can see, there's no admin bar showing. Screenshot by David Gewirtz/ZDNETAt this point, the process was out of the AI's hands. It was simply time to deploy the changes, both back to GitHub and to the master WordPress repository. First, I used GitHub Desktop to merge the branch code back into the main branch on my development machine. I changed "Hide Admin Menu" to "Hide admin menu" in my code's main branch, because I like it better. I pushed thatback to the GitHub cloud. Screenshot by David Gewirtz/ZDNETThen, because I just don't like random branches hanging around once they've been incorporated into the distribution version, I deleted the new branch on my computer. Screenshot by David Gewirtz/ZDNETI also deleted the new branch from the GitHub cloud service. Screenshot by David Gewirtz/ZDNETFinally, I packaged up the new code. I added a change to the readme to describe the new feature and to update the code's version number. Then, I pushed it using SVNup to the WordPress plugin repository. Journey to the center of the code Jules is very definitely beta right now. It hung in a few places. Some screens didn't update. It decided to check out for 90 minutes. I had to wait while it went to and came back from its digital happy place. It's evidencing all the sorts of things you'd expect from a newly-released piece of code. I have no concerns about that. Google will clean it up. The fact that Julescan handle an entire repository of code across a bunch of files is big. That's a much deeper level of understanding and integration than we saw, even six months ago. Also: How to move your codebase into GitHub for analysis by ChatGPT Deep Research - and why you shouldThe speed with which it can change an entire codebase is terrifying. The damage it can do is potentially extraordinary. It will gleefully go through and modify everything in your codebase, and if you specify something wrong and then push or merge, you will have an epic mess on your hands. There is a deep inequality between how quickly it can change code and how long it will take a human to review those changes. Working on this scale will require excellent unit tests. Even tools like mine, which don't lend themselves to full unit testing, will require some kind of automated validation to prevent robot-driven errors on a massive scale. Those who are afraid these tools will take jobs from programmers should be concerned, but not in the way most people think. It is absolutely, totally, one-hundo-percent necessary for experienced coders to review and guide these agents. When I left out one critical instruction, the agent gleefully bricked my site. Since I was the person who wrote the code initially, I knew what to fix. But it would have been brutally difficult for someone else to figure out what had been left out and how to fix it. That would have required coming up to speed on all the hidden nuances of the entire architecture of the code. Also: How to turn ChatGPT into your AI coding power tool - and double your outputThe jobs that are likely to be destroyed are those of junior developers. Jules is easily doing junior developer level work. With tools like Jules or Codex or Copilot, that cost of a few hundred bucks a month at most, it's going to be hard for management to be willing to pay medium-to-high six figures for midlevel and junior programmers. Even outsourcing and offshoring isn't as cheap as using an AI agent to do maintenance coding. And, as I wrote about earlier in the week, if there are no mid-level jobs available, how will we train the experienced people we're going to need in the future? I am also concerned about how access limits will shake out. Productivity gains will drop like a rock if you need to do one more prompt and you have to wait a day to be allowed to do so. Screenshot by David Gewirtz/ZDNETAs for me, in less than 10 minutes, I turned out a new feature that had been requested by readers. While I was writing another article, I fed the prompt to Jules. I went back to work on the article, and checked on Jules when it was finished. I checked out the code, brought it down to my computer, and pushed a release. It took me longer to upload the thing to the WordPress repository than to add the entire new feature. For that class of feature, I got a half-a-day's work done in less than half an hour, from thinking about making it happen to published to my users. In the last two hours, 2,500 sites have downloaded and installed the new feature. That will surge to well over 10,000 by morning. Without Jules, those users probably would have been waiting months for this new feature, because I have a huge backlog of work, and it wasn't my top priority. But with Jules, it took barely any effort. Also: 7 productivity gadgets I can't live withoutThese tools are going to require programmers, managers, and investors to rethink the software development workflow. There will be glaring "you can't get there from here" gotchas. And there will be epic failures and coding errors. But I have no doubt that this is the next level of AI-based coding. Real, human intelligence is going to be necessary to figure out how to deal with it. Have you tried Google's Jules or any of the other new AI coding agents? Would you trust them to make direct changes to your codebase, or do you prefer to keep a tighter manual grip? What kinds of developer tasks do you think these tools should and shouldn't handle? Let us know in the comments below. Want more stories about AI? Sign up for Innovation, our weekly newsletter.You can follow my day-to-day project updates on social media. Be sure to subscribe to my weekly update newsletter, and follow me on Twitter/X at @DavidGewirtz, on Facebook at Facebook.com/DavidGewirtz, on Instagram at Instagram.com/DavidGewirtz, on Bluesky at @DavidGewirtz.com, and on YouTube at YouTube.com/DavidGewirtzTV.Featured
#let #google039s #jules #agent #into
I let Google's Jules AI agent into my code repo and it did four hours of work in an instant
hemul75/Getty ImagesOkay. Deep breath. This is surreal. I just added an entire new feature to my software, including UI and functionality, just by typing four paragraphs of instructions. I have screenshots, and I'll try to make sense of it in this article. I can't tell if we're living in the future or we've just descended to a new plane of hell.Let's take a step back. Google's Jules is the latest in a flood of new coding agents released just this week. I wrote about OpenAI Codex and Microsoft's GitHub Copilot Coding Agent at the beginning of the week, and ZDNET's Webb Wright wrote about Google's Jules. Also: I test a lot of AI coding tools, and this stunning new OpenAI release just saved me days of workAll of these coding agents will perform coding operations on a GitHub repository. GitHub, for those who've been following along, is the giant Microsoft-owned software storage, management, and distribution hub for much of the world's most important software, especially open source code. The difference, at least as it pertains to this article, is that Google made Jules available to everyone, for free. That meant I could just hop in and take it for a spin. And now my head is spinning. Usage limits and my first two prompts The free access version of Jules allows only five requests per day. That might not seem like a lot, but in only two requests, I was able to add a new feature to my software. So, don't discount what you can get done if you think through your prompts before shooting off your silver bullets for the day. My first two prompts were tentative. It wasn't that I wasn't impressed; it was that I really wasn't giving Jules much to do. I'm still not comfortable with the idea of setting an AI loose on all my code at once, so I played it safe. My first prompt asked Jules to document the "hooks" that add-on developers could use to add features to my product. I didn't tell Jules much about what I wanted. It returned some markup that it recommended dropping into my code's readme file. It worked, but meh. Screenshot by David Gewirtz/ZDNETI did have the opportunity to publish that code to a new GitHub branch, but I skipped it. It was just a test, after all. My second prompt was to ask Jules to suggest five new hooks. I got back an answer that seemed reasonable. However, I realized that opening up those capabilities in a security product was just too risky for me to delegate to an AI. I skipped those changes, too. It was at this point that Jules wanted a coffee break. It stopped functioning for about 90 minutes. Screenshot by David Gewirtz/ZDNETThat gave me time to think. What I really wanted to see was whether Jules could add some real functionality to my code and save me some time. Necessary background information My Private Site is a security plugin for WordPress. It's running on about 20,000 active sites. It puts a login dialog in front of the site's web pages. There are a bunch of options, but that's the key feature. I originally acquired the software a decade ago from a coder who called himself "jonradio," and have been maintaining and expanding it ever since. Also: Rust turns 10: How a broken elevator changed software foreverThe plugin provides access control to the front-end of a website, the pages that visitors see when they come to the site. Site owners control the plugin via a dashboard interface, with various admin functions available in the plugin's admin interface. I decided to try Jules out on a feature some users have requested, hiding the admin bar from logged-in users. The admin bar is the black bar WordPress puts on the top of a web page. In the case of the screenshot below, the black admin bar is visible. Screenshot by David Gewirtz/ZDNETI wanted Jules to add an option on the dashboard to hide the admin bar from logged-in users. The idea is that if a user logged in, the admin bar would be visible on the back end, but logged-in users browsing the front-end of the site wouldn't have to see the ugly bar. This is the original dashboard, before adding the new feature. Screenshot by David Gewirtz/ZDNETSome years ago, I completely rewrote the admin interface from the way it was when I acquired the plugin. Adding options to the interface is straightforward, but it's still time-consuming. Every option requires not only the UI element to be added, but also preference saving and preference recalling when the dashboard is displayed. That's in addition to any program logic that the preference controls. In practice, I've found that it takes me about 2-3 hours to add a preference UI element, along with the assorted housekeeping involved. It's not hard, but there are a lot of little fiddly bits that all need to be tweaked. That takes time. That should bring you up to speed enough to understand my next test of Jules. Here's a bit of foreshadowing: the first test failed miserably. The second test succeeded astonishingly. Instructing Jules Adding a hide admin bar feature is not something that would have been easy for the run-of-the-mill coding help we've been asking ChatGPT and the other chatbots to perform. As I mentioned, adding the new option to the dashboard requires programming in a variety of locations throughout the code, and also requires an understanding of the overall codebase. Here's what I told Jules. 1. On the Site Privacy Tab of the admin interface, add a new checkbox. Label the section "Admin Bar" and label the checkbox itself "Hide Admin Bar".I instructed Jules where I wanted the AI to put the new option. On my first run through, I made a mistake and left out the details in square brackets. I didn't tell Jules exactly where I wanted it to place the new option. As it turns out, that omission caused a big fail. Once I added in the sentence in brackets above, the feature worked. 2. Be sure to save the selection of that checkbox to the plugin's preferences variable when the Privacy Status button is checked. This makes sure Jules knows that there is a preference data structure, and to be sure to update it when the user makes a change. It's important to note that if I didn't have an understanding of the underlying code, I wouldn't have instructed Jules about this, and the code would not work. You can't "vibe code" something like this without knowing the underlying code. 3. Show the appropriate checked or unchecked status when the Site Privacy tab is displayed. This tells the AI that I want the interface to be updated to match what the preference variable specifies. 4. Based on the preference variable created in, add code to hide or show the WordPress admin bar. If Hide Admin Bar is checked, the Admin Bar should not be visible to logged-in WordPress front-end users. If the Hide Admin Bar is not checked, the Admin Bar should be visible to logged-in front-end users. Logged-in back-end users in the admin interface should always be able to see the admin bar. This describes the business logic that the new preference should control. It requires the AI to know how to hide or show the admin bar, and it requires the AI to know where to put the code in my plugin to enable or disable this feature. And with that, Jules was trained on what I wanted. Jules dives into my code I fed my prompt set into Jules and got back a plan of action. Pay close attention to that Approve Plan? button. Screenshot by David Gewirtz/ZDNETI didn't even get a chance to read through the plan before Jules decided to approve the plan on its own. It did this after every plan it presented. An AI that doesn't wait for permission raises the hairs on the back of my neck. Just saying. Screenshot by David Gewirtz/ZDNETI desperately want to make a Skynet/Landru/Colossus/P1/Hal kind of joke, because I'm freaked out. I mean, it's good. But I'm freaked out. Here's some of the code Jules wrote. The shaded green is the new stuff. I'm not thrilled with the color scheme, but I'm sure that will be tweakable over time. Also: The best free AI courses and certificates in 2025More relevant is the fact that Jules picked up on my variable naming conventions and the architecture of my code and dived right in. This is the new option, rendered in code. Screenshot by David Gewirtz/ZDNETBy the time it was done, Jules had written in all the code changes it planned for originally, plus some test code. I don't use standardized tests. I would have told Jules not to do it the way it planned, but it never gave me time to approve or modify its original plan. Even so, it worked out. Screenshot by David Gewirtz/ZDNETI pushed the Publish branch button, which caused GitHub to create a new branch, separate from my main repository. Jules then published its changes to that branch. Screenshot by David Gewirtz/ZDNETThis is how contributors to big projects can work on those projects without causing chaos to the main code line. Up to this point, I could look at the code, but I wasn't able to run it. But by pushing the code to a branch, Jules and GitHub made it possible for me to replicate the changes safely down to my computer to test them out. If I didn't like the changes, I could have just switched back to the main branch and no harm, no foul. But I did like the changes, so I moved on to the next step. Around the code in 8 clicks Once I brought the branch down to my development machine, I could test it out. Here's the new dashboard with the Hide Admin Menu feature. Screenshot by David Gewirtz/ZDNETI tried turning the feature on and off and making sure the settings stuck. They did. I also tried other features in the plugin to make sure nothing else had broken. I was pretty sure nothing would, because I reviewed all the changes before approving the branch. But still. Testing is a good thing to do. I then logged into the test website. As you can see, there's no admin bar showing. Screenshot by David Gewirtz/ZDNETAt this point, the process was out of the AI's hands. It was simply time to deploy the changes, both back to GitHub and to the master WordPress repository. First, I used GitHub Desktop to merge the branch code back into the main branch on my development machine. I changed "Hide Admin Menu" to "Hide admin menu" in my code's main branch, because I like it better. I pushed thatback to the GitHub cloud. Screenshot by David Gewirtz/ZDNETThen, because I just don't like random branches hanging around once they've been incorporated into the distribution version, I deleted the new branch on my computer. Screenshot by David Gewirtz/ZDNETI also deleted the new branch from the GitHub cloud service. Screenshot by David Gewirtz/ZDNETFinally, I packaged up the new code. I added a change to the readme to describe the new feature and to update the code's version number. Then, I pushed it using SVNup to the WordPress plugin repository. Journey to the center of the code Jules is very definitely beta right now. It hung in a few places. Some screens didn't update. It decided to check out for 90 minutes. I had to wait while it went to and came back from its digital happy place. It's evidencing all the sorts of things you'd expect from a newly-released piece of code. I have no concerns about that. Google will clean it up. The fact that Julescan handle an entire repository of code across a bunch of files is big. That's a much deeper level of understanding and integration than we saw, even six months ago. Also: How to move your codebase into GitHub for analysis by ChatGPT Deep Research - and why you shouldThe speed with which it can change an entire codebase is terrifying. The damage it can do is potentially extraordinary. It will gleefully go through and modify everything in your codebase, and if you specify something wrong and then push or merge, you will have an epic mess on your hands. There is a deep inequality between how quickly it can change code and how long it will take a human to review those changes. Working on this scale will require excellent unit tests. Even tools like mine, which don't lend themselves to full unit testing, will require some kind of automated validation to prevent robot-driven errors on a massive scale. Those who are afraid these tools will take jobs from programmers should be concerned, but not in the way most people think. It is absolutely, totally, one-hundo-percent necessary for experienced coders to review and guide these agents. When I left out one critical instruction, the agent gleefully bricked my site. Since I was the person who wrote the code initially, I knew what to fix. But it would have been brutally difficult for someone else to figure out what had been left out and how to fix it. That would have required coming up to speed on all the hidden nuances of the entire architecture of the code. Also: How to turn ChatGPT into your AI coding power tool - and double your outputThe jobs that are likely to be destroyed are those of junior developers. Jules is easily doing junior developer level work. With tools like Jules or Codex or Copilot, that cost of a few hundred bucks a month at most, it's going to be hard for management to be willing to pay medium-to-high six figures for midlevel and junior programmers. Even outsourcing and offshoring isn't as cheap as using an AI agent to do maintenance coding. And, as I wrote about earlier in the week, if there are no mid-level jobs available, how will we train the experienced people we're going to need in the future? I am also concerned about how access limits will shake out. Productivity gains will drop like a rock if you need to do one more prompt and you have to wait a day to be allowed to do so. Screenshot by David Gewirtz/ZDNETAs for me, in less than 10 minutes, I turned out a new feature that had been requested by readers. While I was writing another article, I fed the prompt to Jules. I went back to work on the article, and checked on Jules when it was finished. I checked out the code, brought it down to my computer, and pushed a release. It took me longer to upload the thing to the WordPress repository than to add the entire new feature. For that class of feature, I got a half-a-day's work done in less than half an hour, from thinking about making it happen to published to my users. In the last two hours, 2,500 sites have downloaded and installed the new feature. That will surge to well over 10,000 by morning. Without Jules, those users probably would have been waiting months for this new feature, because I have a huge backlog of work, and it wasn't my top priority. But with Jules, it took barely any effort. Also: 7 productivity gadgets I can't live withoutThese tools are going to require programmers, managers, and investors to rethink the software development workflow. There will be glaring "you can't get there from here" gotchas. And there will be epic failures and coding errors. But I have no doubt that this is the next level of AI-based coding. Real, human intelligence is going to be necessary to figure out how to deal with it. Have you tried Google's Jules or any of the other new AI coding agents? Would you trust them to make direct changes to your codebase, or do you prefer to keep a tighter manual grip? What kinds of developer tasks do you think these tools should and shouldn't handle? Let us know in the comments below. Want more stories about AI? Sign up for Innovation, our weekly newsletter.You can follow my day-to-day project updates on social media. Be sure to subscribe to my weekly update newsletter, and follow me on Twitter/X at @DavidGewirtz, on Facebook at Facebook.com/DavidGewirtz, on Instagram at Instagram.com/DavidGewirtz, on Bluesky at @DavidGewirtz.com, and on YouTube at YouTube.com/DavidGewirtzTV.Featured
#let #google039s #jules #agent #into
·2 Views