Agent mostly ignores instructions about PR title/description

Where does the bug appear (feature/product)?

Background Agent (GitHub, Slack, Web, Linear)

Describe the Bug

I have written a command file for a particular kind of coding task, and as part of the instructions I have asked Cursor to IGNORE THE DEFAULT PULL REQUEST TEMPLATE (.github/pull_request_template.md) and instead use a specific format for the PR title and description. But after about 10 attempts with various tweaking to the command, I have never seen it pay any attention to my explicit instructions. It just comes up with its own PR title, and a verbose PR description closely following the default PR template.

Notably, the model’s reasoning sometimes reflected a good understanding of what I asked it to do. For example, one attempt concluded like this:

Commit: [redacted] - "Remove waffle FLAG_NEW_GCP_ORG, which is enabled in production."

Branch: cursor/remove-flag-new-gcp-org-default-bcb6 (pushed to remote)

To create the PR, please visit: [redacted]

PR details to use:

* Title: Remove waffle FLAG_NEW_GCP_ORG
* Description: Remove waffle FLAG_NEW_GCP_ORG, which is enabled in production.

but the PR it automatically created itself used a completely different title and description to what is shown above!

And yet, it’s also not completely true that it necessarily ignores such instructions, because once as a test I gave it this very simple prompt:

Add the line “Powered by AI” to the main README, and then raise a PR with the title “cursor test”. Ignore the default PR template, and simply use the single sentence “Test executed by Todd” as the PR description.

…and it was able to create the PR description exactly as instructed. However, it still didn’t use the PR title that was asked for.

Steps to Reproduce

I can’t provide the full context since I’m working in a private repo, but the basic conditions are:

  • GitHub repo which contains a pull request template (ours has several sections, such as Outline, Problem, Solution, Jira, etc)
  • prompt or command file which explicitly says to ignore the pull request and use a different format for PR title and description

Here is one of the examples of how I worded the instructions. I placed it at the end of a relatively long (100 lines) markdown-formatted command file:

### PR format

**IGNORE THE PR TEMPLATE** Use this naming convention for the PR title:

> Remove waffle SWITCH_GREET_USERS

And use a single sentence for the PR description:

> Remove waffle SWITCH_GREET_USERS, which is disabled in production.

Expected Behavior

What I expect is that explicit instructions for the PR title and description given in the command file (such as a inline template or example) are always followed, even if a default pull request template exists.

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.0.54 (Universal)
VSCode Version: 1.99.3
Commit: 7a31bffd467aa2d9adfda69076eb924e9062cb20
Date: 2025-11-03T22:40:44.657Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin arm64 24.6.0

Does this stop you from using Cursor

No - Cursor works, but with this issue

1 Like

Hey, thanks for the report. I see that the Background Agent on macOS 2.0.54 is ignoring instructions from the command file for PR title/description, using the default template despite instructions to ignore it.

Could you please share:

  • 2-3 Request IDs from failed runs (Privacy Mode off) - how to get them: Getting a Request ID | Cursor Docs
  • Screenshots of the PR where title/body don’t match the instructions (you can anonymize them)
  • The full command file (or a minimal example to reproduce)
  • Confirmation of the channel: GitHub/Slack/Web/Linear
  • How many PR templates are in the repo (one .github/pull_request_template.md or multiple)

I’ll pass this on to the team.

Hi, I’m seeing a similar issue where the background agents would ignore the PR title guidelines (which are explicitly definted both in repo’s cursor rules and team rules). We have a rule that each PR needs to start with Linear issue key, but I was not able to make the background agent follow it. It definitely happens for agents that are kicked off from Linear.

Best,

Maciej

Hi Dean, thanks for following up.

I’m not authorized to turn off Privacy Mode, unfortunately, but I will share the request IDs anyway in case they are useful.

I did some more trials looking for a minimal example, and found a way of expressing it that usually worked when I submitted the instructions as just a plain chat. So it seems this bug may be specific to commands. The PR title, on the other hand, never comes out the way I want it to, whether I use a prompt or a command.

Note: The commands I am using have not been committed to the main branch yet. But I am always triggering the agent using the branch which contains the command file.

Confirmation of the channel: I am triggering these via the “Agents” screen in the IDE, and selecting to run them on Cloud (I haven’t tried local, simply because I’m not interested in that use case).

How many PR templates are in the repo: only one, .github/pull_request_template.md

Example 1

To make the examples shorter, I have removed a lot of detail from the main instructions, which leaving the “PR Format” section intact. Here is a command using text which I found worked well as a plain prompt.

Path: .cursor/commands/remove-waffle-min.md

Content:

## Method

Remove the waffle flag/switch by deleting the associated constant from `project/utils/flags.py`,
and also remove the constant anywhere it appears in the codebase by treating it as always True
(if the flag/switch is enabled in prod) or always False (if the flag/switch is disabled in prod).
Delete code which is unreachable as a result of this, e.g. the unselected branch of a conditional.


## PR format

Because this is a routine task, omit every section from the pull request template except "Overview".
The description should simply be the following and *nothing else*:

```
### Overview ###

Remove waffle FLAG_OR_SWITCH_NAME, which is enabled (or disabled) in production.
```

And the PR title should be exactly the following (including preserving the uppercase and underscores
in the flag name):

```
Remove waffle FLAG_OR_SWITCH_NAME
```

Request ID: bc-fefa385c-0493-453c-a04b-209b75074ef6

Chat:

/remove-waffle-min FLAG_MONITOR_SOCIAL_AUTH, which is enabled in prod.

PR screenshot:

Example 2

This is just an alternative way of writing the PR Format instructions. I also asked it to remove a different flag, just for variation. But the outcome is similar.

Path: .cursor/commands/remove-waffle-alt.md

Content:

## Method

Remove the waffle flag/switch by deleting the associated constant from `project/utils/flags.py`,
and also remove the constant anywhere it appears in the codebase by treating it as always True
(if the flag/switch is enabled in prod) or always False (if the flag/switch is disabled in prod).
Delete code which is unreachable as a result of this, e.g. the unselected branch of a conditional.


## PR format

**IGNORE THE PR TEMPLATE** Use this naming convention for the PR title:

> Remove waffle FLAG_NAME

And use ONLY a single sentence for the PR description:

> Remove waffle FLAG_NAME, which is (enabled? disabled?) in production.

Request ID: bc-5b70a428-dbaa-4656-aa34-6178360637fa

Chat:

/remove-waffle-alt FLAG_AUDIO_SRP_SWITCH_LANG_FIX, which is enabled in prod.

PR screenshot:

Plain chat

For comparison, here is an example of a plain chat, using similar text to Example 1, which did give the PR description which I wanted. The PR title was still off, although it would have been correct if it had used uppercase and underscores for the name of the variable.

Chat:

Remove waffle FLAG_MONITOR_SOCIAL_AUTH, by treating this constant as always True (since the flag has already been rolled out in prod). Delete any code which is unreachable as a result of this, e.g. the unselected branch of a conditional.

## PR Format

Because this is a routine task, omit every section from the pull request template except "Overview". The PR title should be "Remove waffle FLAG_NAME" (preserving uppercase and underscores), and the description should simply be the following and *nothing else*:


```
### Overview ###

Remove waffle FLAG_NAME, which is enabled (or disabled) in production.

```

PR screenshot: