While I’m talking about AI… (is there anything else to talk about?) I’m known to be cautious about AI and exactly what it can do. My skepticism is misplaced, you might say. After all, isn’t AI replacing thousands of coding jobs? It’s going to come for network engineers too!
I’ve been playing with Warp, a terminal tool with AI built in. Maybe I’m just old and stuck in my ways, but I’m struggling to understand the use case.
From my Mac terminal I can tell it “change into the Downloads folder”, and, by golly, it does it. Except, I could type “cd Downloads” a lot faster than I can write it in English. It can definitely be helpful in creating regex’s or more complex CLI than I normally would do, but it’s still a lot of typing for information I could probably find on StackExchange. At least, I could before AI started putting StackExchange out of business.
Leaving the Mac CLI, I attempted to log in to an IOS XE switch and had this experience:
ssh admin@10.195.180.76 (admin@10.195.180.76) Password: Line has invalid autocommand " export TERM_PROGRAM='WarpTerminal' hook=$(printf "{\"hook\": \"SSH\", \"value\": {\"socket_path\": \"~/.ssh/175935833619060\", \"remote_shell\": \"%s\"}}" "${SHELL##*/}" | command -p od -An -v -tx1 | command -p tr -d " \n") printf '^[]9278;d;%s' $hook if"Connection to 10.195.180.76 closed by remote host. Connection to 10.195.180.76 closed.
Well, shucks. I spent some time with Warp’s integrated AI trying to understand what exactly this means, but in exasperation with its cryptic responses I finally Googled the answer and found out that I can deselect some wrapper setting under “Features” in the settings. This would be helpful if the setting actually existed, which it does not. Warp’s settings include a helpful search field, but it turned up nothing and the setting was not at the specified location.
Instead, I created a “subshell” with the “command ssh”, whatever that does. (This was in another post found via Google.) Now I was able to log in to the device.
I told Warp to configure an IPv6 address on an existing interface. (Again, way more typing than I would normally need.) Here is what happened:
c9300-4#interface g1/0/24 ^ % Invalid input detected at '^' marker. c9300-4#ipv6 address 2001:db8:cafe:100::1/64 ^ % Invalid input detected at '^' marker.
Well, OK. As far as I know, Warp does not claim to be a context-aware networking configuration tool, so I’ll forgive it. I re-wrote the text and told it to configure this from exec mode. It got the point and it worked.
Now, the test. If you happen to be the Russian spambot who reads this blog regularly, you remember that I like to test AI with some confusing CLI syntax from the IOS VRRPv3 configuration which I learned about from Ivan Peplnjak’s blog. (Read the original posts to understand the problem.) Would Warp get it right?
When it first attempted to apply the config, it didn’t take at all. I asked Warp why, and it correctly told me I needed to add “fhrp ver vrrp v3” into the global config. (Very intuitive, right, Cisco?) After adding this in, it applied this configuration:
c9300-4(config-if)#vrrp 1 address-family ipv6 c9300-4(config-if-vrrp)#address 2001:db8:cafe:100::100/64
As Homer Simpson would say, “Doh!” This CLI is what logicians would call “necessary but not sufficient”. Without a link local address, this configuration will not work, as we see in the “show vrrp” output:
State is INIT (No Primary virtual IP address configured)
We can look at AI in one of a couple ways. Some might see it as a human replacement. “With AI, we won’t need network engineers anymore. AI will have all that knowledge and we won’t need network engineers anymore.”
Well, if that’s the case, we’ve got a way to go. Granted, as I said, Warp is not specifically a network engineering tool. Cisco’s Deep Network Model will probably not get tripped up like that. However, there is so much nuance and complexity to networking, I’m still not convinced AI will be close to replacing network engineers anytime soon.
The second camp views AI as an automation tool. I think this is a more plausible use case, but any automation tool needs to make my life easier, not harder. There is a learning curve to any automation tool, such as Python or Ansible. To be useful, the net impact on productivity has to be positive. If I invest time in learning Ansible (not very challenging), and I’m managing a large network, I can see a return on the investment quickly. If AI doesn’t do things right, if it constantly makes mistakes, if it scales poorly to large numbers of devices, then I’m going to invest more time in the tool than in my actual work. That seems to be where we are right now.
I’ve been playing with Vibe Coding, and at first I was astonished. AI tools like Claude crank out code for me like a champ. The only problem is the code rarely works. It takes repeated, tedious iterations with the LLM to get working code.
In some cases I’ve gotten it done. I used Claude to write an MCP agent to discover and collect data on network devices. However, I spent weeks trying to get it to write an iPhone app I have an idea for. (I’ve found Swift to be only slightly more comprehensible than assembly language.) After struggling back and forth with the AI, I had to give up. Over and over again, it told me “ah, this time I found the REAL answer” only to provide me with code that didn’t work, still. I could probably code the app faster using AI to help me learn Swift, and then write it myself.
Of course, AI tools are still relatively new, and we can expect developments in the future. For now, I’d say don’t quit your day job. (On a side note, my Russian spambot reader knows how much I struggle to find a blog theme I like. I’m going to see if I can vibe code a new theme that I actually like. Wish me luck.)