Kilo AI CLI Coding Agent

I’ve been working with Kilo CLI for the last day. So, this is first impressions. This is coming from working with Codex CLI for a few months. The following post comes from this experience. In this case I’m using GPT-5.5 medium in both Kilo and Codex.

The Kilo AI CLI has some cool features. I really appreciate the ability to connect with your existing provider. I like the auto-model routing. The interface is pretty cool, with a lot of themes to choose from. There is a persistent status section in the CLI that shows usage, context available, tokens used, modified files. It’s really cool.

However, I’ve consistently run into issues since attempting to use Kilo. And it’s not with the interface or the functionality of the software. It’s with the underlying tooling. Something about Kilo causes the LLM to do things that I don’t want it to do. Here’s an excerpt from my AGENTS.md file.

When the user pastes review feedback, follow the Review Feedback section below. Treat the feedback as a claim to verify, explain the conclusion, recommend the smallest correct fix, and ask before implementing unless the user explicitly asks for changes.
...
## Review Feedback

When addressing merge request or code review feedback, treat each comment as a claim to verify, not as an instruction to apply automatically.

- First confirm whether the reported problem is real by reading the relevant code paths and, when practical, reproducing or reasoning through the behavior.
- Validate suggested solutions before implementing them; they may be incomplete, too broad, or aimed at the wrong boundary.
- If the issue is valid, choose the smallest correct fix that changes the fewest lines and preserves existing intended behavior.
- If the issue is not valid, explain why with concrete code references or behavior.
- If a minimal fix could hide an inconsistent state, distinguish the legitimate case from the suspicious case and handle each explicitly.

That’s pretty clear about what I expect. My expectation is no changes unless it’s verified with me. Or unless I tell the agent to explicitly fix it. Over the last day I’ve given feedback to the agent and it continues to ignore my instructions, opting instead to make a change without verifying it with me. That’s frustrating.

Kilo Modes

Kilo comes with several modes out of the box. There’s a Code mode, a Plan mode, an Ask mode, a Debug mode, and an Orchestrator mode. Now, this frustration could be my fault for using the tool wrong. I started in “Code mode”. Perhaps, code mode, means that Kilo is going to strongly tell the LLM to write code, even if it contradicts my instructions. It could be my fault for not starting in ASK mode and then flipping to CODE mode. But… seriously. I’m not going to sit here switching modes all day when I expect the tool to be smart enough to follow instructions. If the tool is in code mode, and the instructions are “ask before coding” then the tool should ask. The mode should be inferred from the prompt. If the prompt is a question, then assume an answer is wanted. If the prompt is, fix this issue, then assume that a combination of debug+code is wanted. If the prompt is, implement this feature, then assume orchestrator+code is likely wanted.

Maybe that’s just me. But switching between modes seems like busy work for me.

Kilo Tooling

I have RTK set up on my machine and integrated into my AI agents. The tool exists as rtk and is callable by the AI agents. However, the code I was writing was in php and I don’t have php installed on my system. I do have it running in a container running on my system though. I have explicit instructions in my AGENTS.md file telling the Agent to look at local machine notes. My local machine notes tell the Agent all about how this current system uses Fedora and Podman for containers.

Today, Kilo failed hard on a few things:
– It did not use rtk. It attempted to use rtk php and when that failed it assumed rtk did not exist and didn’t use it anymore.
– It did not read my local notes. And because it did not read my local notes (despite being told to in the AGENTS file) it failed to validate my code using php
– It tried to use docker multiple times even though the local notes tell it to use podman

Working Verdict

I really like the concept of Kilo. Super cool interface, super cool themes, super cool status window, an auto-model selector. Kilo has a lot of good stuff going for it.

I’ve worked with Kilo and attempted to use it. It’s been an incredibly frustrating experience. Kilo is not reliable and it doesn’t listen.

Despite all the cool, and the hype, when the rubber meets the road Kilo is not up to snuff. Kilo is not up to snuff because Kilo ignores explicit directions.

My plan is to use Pi.dev. I’ve heard that it will work with the Kilo gateway. I probably won’t come back to Kilo, but who knows, they might update the tool to be more reliable. If they do, I’ll try it again.

PHPStorm Classic Mode

So, one of the most annoying things IN MY LIFE has been when JetBrains started adding all of this random AI Assistant autocompletes to their IDE’s. I know I’m not alone, because there are even tickets like this one, How to Shut Off All this AI Crap?.

It’s not that I’m anti-AI – I’m anti-Intrusion. When I’m driving the car, I get to drive the car, not the AI Assistant. Unfortunately, the way JetBrains is adding AI into it’s editor feels very intrusive. And, also unfortunately, it’s a slog to go through all of the IDE settings to try and find every single little thing that needs to be turned off.

Luckily, you don’t need to! JetBrains has added some files that will allow you to selectively use AI tools. My favorite is dropping a .noai file in your project root. It’s easy to do, navigate to your project root in Powershell and run touch .noai. That’s it, all you need is an empty file to disable all the AI stuff in PHPStorm.

Now you can get back to PHPStorm Classic mode. LFG? Molten Core? … oops wrong classic mode.

But what about Junie?

That’s a valid question. Like I said, I’m not anti-AI. I actually like the coding agents, I’ve found them extremely helpful in certain circumstances. So, I wondered, will .noai disable all coding agents? Nope! It won’t. As of this writing .noai will disable the AI Assistant features in the IDE – but you can still use the Junie agent window. I don’t know if that’s an oversight or not, I actually recently heard that the Junie agent window is going away as they consolidate underneath the AI Assistant chat window.

The Better Junie Option (imo)

The better option, in my opinion, is to just use the Junie CLI. It’s currently in beta, and appears very usable from my testing. It’s integrated with your current JetBrains AI pricing model, so if you pay to use Junie within your IDE, then you are paying to use the CLI tool as well. I’ve found that I can open my own custom terminal, or use the built in IDE terminal, and open Junie via CLI. This gives me the best of both worlds, a powerful IDE and a powerful coding agent. I can use both when I want.

Not Quite .noai

Despite .noai working in most circumstances, I’m noticing little bits of AI crop back up. For example, inline Code Completion. I’m wanting classic intellisense, but JetBrains is giving me inline completion using cloud and local models. I had expected this to not happen, and indeed thought it wasn’t happening. But today, as I’m coding, I noticed phpstorm giving me ghosted AI completion hints. So, I navigated to phpstorm settings Editor > General > Code Completion > Inline and unchecked the Enable inline completion using language models: option.

.noai seems to have no effect on this setting