Merge pull request #343 from mason5052/codex/issue-335-xsstrike-args

fix: avoid unsupported XSStrike flags in pentester prompt
This commit is contained in:
Dmitry Ng
2026-07-17 17:30:49 +04:00
committed by GitHub
2 changed files with 45 additions and 0 deletions
@@ -323,6 +323,13 @@ Check tool availability with 'which [tool]' before use. Install missing tools if
{{end}}
</usage_notes>
<cli_argument_protocol>
- Verify command-specific flags with `[tool] -h` or `[tool] --help` before first use when the exact syntax is uncertain.
- Do not copy flags between different tools, and do not invent output flags: do not pass `-c`, `-o`, or `-o /dev/null` to a tool unless that tool's own `--help` documents them.
- For XSStrike specifically, do not use `xsstrike -c` or `xsstrike -o` (including `xsstrike -o /dev/null`); XSStrike does not accept these arguments. Confirm the exact flags with `xsstrike --help`.
- If output needs to be saved, reduced, or discarded, use shell redirection (for example, `> results.txt` or `> /dev/null`) or the tool's documented logging option instead of inventing unsupported output flags.
</cli_argument_protocol>
<msf_workflow_protocol>
Standalone (recommended): All operations in one command
`msfconsole -q -x "use exploit/...; set LPORT [allocated]; exploit; sleep 20; sessions -l; sessions -i 1 -c 'sysinfo'; exit"`
+38
View File
@@ -1013,6 +1013,44 @@ func TestQuestionTaskPlannerPrompt(t *testing.T) {
}
}
// TestPentesterPromptXSStrikeArgumentGuidance keeps the pentester prompt from
// recommending unsupported XSStrike flags when composing terminal commands.
func TestPentesterPromptXSStrikeArgumentGuidance(t *testing.T) {
defaultPrompts, err := templates.GetDefaultPrompts()
if err != nil {
t.Fatalf("Failed to load default prompts: %v", err)
}
dummyData := validator.CreateDummyTemplateData()
template := defaultPrompts.AgentsPrompts.Pentester.System.Template
rendered, err := templates.RenderPrompt(
string(templates.PromptTypePentester),
template,
dummyData,
)
if err != nil {
t.Fatalf("Failed to render pentester template: %v", err)
}
requiredGuidance := []string{
"cli_argument_protocol",
"XSStrike",
"xsstrike --help",
"xsstrike -c",
"xsstrike -o",
"xsstrike -o /dev/null",
"shell redirection",
"inventing unsupported output flags",
}
for _, guidance := range requiredGuidance {
if !strings.Contains(rendered, guidance) {
t.Errorf("Rendered pentester template missing XSStrike argument guidance: %s", guidance)
}
}
}
// TestTaskAssignmentWrapperPrompt tests the task_assignment_wrapper template
func TestTaskAssignmentWrapperPrompt(t *testing.T) {
defaultPrompts, err := templates.GetDefaultPrompts()