Skip to content

Commit ba75cc2

Browse files
authored
fix(copilot): Remove description from feature request search, add PII prevention (#12155)
Two targeted changes to the CoPilot feature request tools: 1. **Remove description from search results** — The `search_feature_requests` tool no longer returns issue descriptions. Only the title is needed for duplicate detection, reducing unnecessary data exposure. 2. **Prevent PII in created issues** — Updated the `create_feature_request` tool description and parameter descriptions to explicitly instruct the LLM to never include personally identifiable information (names, emails, company names, etc.) in Linear issue titles and descriptions. Resolves [SECRT-2010](https://linear.app/autogpt/issue/SECRT-2010)
1 parent 15bcdae commit ba75cc2

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

autogpt_platform/backend/backend/copilot/tools/feature_requests.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
id
3434
identifier
3535
title
36-
description
3736
}
3837
}
3938
}
@@ -205,7 +204,6 @@ async def _execute(
205204
id=node["id"],
206205
identifier=node["identifier"],
207206
title=node["title"],
208-
description=node.get("description"),
209207
)
210208
for node in nodes
211209
]
@@ -239,7 +237,11 @@ def description(self) -> str:
239237
"Create a new feature request or add a customer need to an existing one. "
240238
"Always search first with search_feature_requests to avoid duplicates. "
241239
"If a matching request exists, pass its ID as existing_issue_id to add "
242-
"the user's need to it instead of creating a duplicate."
240+
"the user's need to it instead of creating a duplicate. "
241+
"IMPORTANT: Never include personally identifiable information (PII) in "
242+
"the title or description — no names, emails, phone numbers, company "
243+
"names, or other identifying details. Write titles and descriptions in "
244+
"generic, feature-focused language."
243245
)
244246

245247
@property
@@ -249,11 +251,20 @@ def parameters(self) -> dict[str, Any]:
249251
"properties": {
250252
"title": {
251253
"type": "string",
252-
"description": "Title for the feature request.",
254+
"description": (
255+
"Title for the feature request. Must be generic and "
256+
"feature-focused — do not include any user names, emails, "
257+
"company names, or other PII."
258+
),
253259
},
254260
"description": {
255261
"type": "string",
256-
"description": "Detailed description of what the user wants and why.",
262+
"description": (
263+
"Detailed description of what the user wants and why. "
264+
"Must not contain any personally identifiable information "
265+
"(PII) — describe the feature need generically without "
266+
"referencing specific users, companies, or contact details."
267+
),
257268
},
258269
"existing_issue_id": {
259270
"type": "string",

autogpt_platform/backend/backend/copilot/tools/feature_requests_test.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,11 @@ async def test_successful_search(self):
117117
"id": "id-1",
118118
"identifier": "FR-1",
119119
"title": "Dark mode",
120-
"description": "Add dark mode support",
121120
},
122121
{
123122
"id": "id-2",
124123
"identifier": "FR-2",
125124
"title": "Dark theme",
126-
"description": None,
127125
},
128126
]
129127
patcher, _ = _mock_linear_config(query_return=_search_response(nodes))

autogpt_platform/backend/backend/copilot/tools/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,6 @@ class FeatureRequestInfo(BaseModel):
486486
id: str
487487
identifier: str
488488
title: str
489-
description: str | None = None
490489

491490

492491
class FeatureRequestSearchResponse(ToolResponseBase):

0 commit comments

Comments
 (0)