The Agent tends to be overly aggressive by combining multiple commands into a single line. Because of this, the command fails to match the allowlist, prompting Cursor to treat it as a new command and ask for manual approval.
This happens frequently when using Grok. By contrast, Composer 2.5 doesn’t have this issue. It is able to follow the allowlist design and runs commands individually without violating the rules.
For AI issues: which model did you use?
Model name (e.g., Sonnet 4, Tab…)
For AI issues: add Request ID with privacy disabled
Request ID: f9a7046a-279b-47e5-ab48-6e8dc12daba1
For Background Agent issues, also post the ID: bc-…
Additional Information
Add any other context about the problem here.
Does this stop you from using Cursor?
Yes - Cursor is unusable
Sometimes - I can sometimes use Cursor
No - Cursor works, but with this issue
The more details you provide, the easier it is for us to reproduce and fix the issue. Thanks!
What you are seeing is how the allowlist is designed to work, combined with how Grok likes to write commands. The allowlist is matched per command, not per line. So a line like cd api && npm test | tail -20 will only auto-run if cd, npm and tail are each on your allowlist. If any one of them is missing, the whole line asks for approval. Grok tends to pack more small helper commands (cd, echo, head, tail, grep) into one line than Composer does, so it trips this more often.
A few things that should cut the prompts down a lot:
When the approval card appears, open the “Always run” option. It lists exactly which commands were not on the allowlist. Adding those (they are usually harmless helpers like cd, echo, head, tail, grep, wc, ls) means the same chained line auto-runs next time.
Add a User Rule (Cursor Settings > Rules) such as: “Run one shell command per tool call. Do not chain commands with && or pipes unless the task requires it.” Grok follows this well and it keeps each command matchable on its own.
If you are on a local (non SSH) workspace, try Run Mode “Allowlist (with Sandbox)” in Cursor Settings > Agents > Execution and Approvals. Commands the sandbox can contain auto-run without needing to be allowlisted, and only the rest fall back to the allowlist.
If it still prompts for a line where every command is already on your list, could you send a screenshot of the approval card (it shows a “Not in allowlist: …” line) together with the entries you have on the allowlist? That would let us check whether something else in the command (a redirect, a heredoc, a subshell) is what is blocking the match.