hackbot: bug-fix silently drops `comment` on a plain run, so there is no way to pass extra instructions
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 70/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- python, typescript
Research direction
Start with services/hackbot-api/app/schemas.py and agents/bug-fix/hackbot_agents/bug_fix/main.py, then trace agent.py and the triage-and-fix.md prompt. Check TriggerForm.tsx for the optional input and compare its handling with the existing textarea inputs. Done means instructions reach plain bug-fix runs as INSTRUCTIONS, appear safely in the prompt when set, and remain absent when unset.
Written by the indexing model from the issue text.
Description
Problem
BugFixInputs.comment is only honored on the Phabricator follow-up path. agents/bug-fix/hackbot_agents/bug_fix/agent.py:117-126 renders prompts/follow-up.md with {comment} when revision_id is set, and otherwise renders prompts/triage-and-fix.md, which has no {comment} placeholder:
Bug to work on: {bug_id}
Task: Triage and fix the bug, and verify the fix
The rules in {rules_path} are available if the task calls for them, but the task above is your primary directive and overrides the default triage workflow.
The AgentInputs validator only enforces the other direction (revision_id ⇒ comment), and BugFixInputs ignores unknown fields, so POST /agents/bug-fix/runs with {"bug_id": 1234567, "comment": "start from the regression range in comment 4"} is accepted, stored on the run, passed to the container as COMMENT, and then silently dropped. Nothing tells the caller their instructions went nowhere.
The consequence is that there is no way to say anything to a plain bug-fix run beyond the bug id — not from the API, not from TriggerForm.tsx (which collects only bug_id, model, max_turns, effort), and not from a Slack action button.
Change
A new optional instructions on BugFixInputs (services/hackbot-api/app/schemas.py:79-88) and on the agent's AgentInputs (agents/bug-fix/hackbot_agents/bug_fix/__main__.py:8-45) — it reaches the job as INSTRUCTIONS for free through model_to_env — plus an {instructions} slot in triage-and-fix.md: empty when unset, and otherwise framed as guidance that does not override the rules, in the <...>-tag style follow-up.md already uses for untrusted comment text. The str.format safety argument at agent.py:47-55 covers it: substituted values are inserted verbatim and not re-scanned, so an untrusted instructions cannot break out of its placeholder.
Reusing comment instead would make one field mean two different things depending on whether revision_id is set, and would leave the follow-up path's revision semantics (phabricator_update_patch / phabricator_add_comment, config.py:30-36) entangled with a plain "focus here" hint. A separate field is cheaper to reason about.
Worth a <textarea> in TriggerForm.tsx alongside it, the way AutowebcompatReproInputs.bug_data and TestPlanGeneratorInputs.feature_description already have one.
Why this is filed on its own
It came up as the second half of a Slack action-button request: one button that triggers a bug-fix run on the triaged bug, and a second that triggers it with an accompanying prompt. The second one is not possible today, and it also needs a Slack modal (views.open + view_submission, with private_metadata carrying the message identity so the trigger claim still applies), which is receiver work on a different schedule.
Keeping that separate lets this input land whenever it lands. The silent drop of comment on a plain run is worth fixing on its own merits even if a second Slack button never ships.
- Dominant language
- Python
- Stars
- 571
- Forks
- 355
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 78
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from mozilla/bugbug
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
hackbot
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
Install `xvfb` in the image for the bug fix agentPossibly taken @ayoubdiourin7 claimed this 5 days ago. Openhackbot
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
mozilla/bugbug#6947 · 1 assignee ·
Maintainers usually reply within 1 day
-
good-first-bug hackbot
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
good-first-bug hackbot
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
mozilla/bugbug#6918 · 5 comments ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
raullenchai/Rapid-MLX#4042 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
LearningCircuit/local-deep-research#7067 ·
Maintainers usually reply within 1 day
-
#bug
Difficulty 1/5 Under an hour Newbie friendliness 92/100
apache/superset#44923 · 1 comment ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
lawndoc/stack-back#123 ·