feat: Add file-based Human-in-the-Loop (HIL) inbox system for operator-assisted tool workflows#338
Closed
fresh3nough wants to merge 4 commits intousestrix:mainfrom
Closed
feat: Add file-based Human-in-the-Loop (HIL) inbox system for operator-assisted tool workflows#338fresh3nough wants to merge 4 commits intousestrix:mainfrom
fresh3nough wants to merge 4 commits intousestrix:mainfrom
Conversation
added 4 commits
March 1, 2026 23:46
- Add strix/hil/ package with InputManager for file-drop inbox I/O - Add HIL_INBOX_PATH to Config for custom inbox location - Add Operator Help section to all 25 tool skill .md files - Add HIL_INBOX_PATH to README configuration section - Add 44 tests covering full request/response flow, timeout, cleanup, config integration, tool md validation, and module exports
- List all 25 operator-assisted tools organized by category (recon, exploitation, proxy, cracking, network, AD, RE/forensics) - Add in-depth HIL inbox system documentation with architecture, step-by-step flow, code examples, key features, operator workflow, and configuration details
Contributor
Greptile SummaryThis PR successfully implements a file-based Human-in-the-Loop (HIL) inbox system that replaces fragile copy-paste workflows for passing large tool output between operators and agents. The implementation is well-structured with comprehensive documentation and test coverage. Key Changes:
Critical Issue:
Strengths:
Confidence Score: 3/5
Important Files Changed
Last reviewed commit: 6a825d1 |
| The :class:`~pathlib.Path` of the created request file. | ||
| """ | ||
| inbox_dir = inbox or get_inbox_path() | ||
| req_file = inbox_dir / f"{_REQ_PREFIX}{task_id}{_FILE_SUFFIX}" |
Contributor
There was a problem hiding this comment.
task_id used directly in path construction without validation - could allow path traversal if it contains .. or path separators
Suggested change
| req_file = inbox_dir / f"{_REQ_PREFIX}{task_id}{_FILE_SUFFIX}" | |
| # Validate task_id to prevent path traversal | |
| if not task_id or '/' in task_id or '\\' in task_id or '..' in task_id: | |
| raise ValueError(f"Invalid task_id: {task_id!r}") | |
| req_file = inbox_dir / f"{_REQ_PREFIX}{task_id}{_FILE_SUFFIX}" |
Prompt To Fix With AI
This is a comment left during a code review.
Path: strix/hil/input_manager.py
Line: 69
Comment:
`task_id` used directly in path construction without validation - could allow path traversal if it contains `..` or path separators
```suggestion
# Validate task_id to prevent path traversal
if not task_id or '/' in task_id or '\\' in task_id or '..' in task_id:
raise ValueError(f"Invalid task_id: {task_id!r}")
req_file = inbox_dir / f"{_REQ_PREFIX}{task_id}{_FILE_SUFFIX}"
```
How can I resolve this? If you propose a fix, please make it concise.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #337
Summary
This PR adds a file-based Human-in-the-Loop (HIL) inbox system that replaces fragile copy-paste workflows (terminal
input()/ Caido proxy) for passing large tool output back to the agent. Operators can now drop tool output of any size into a shared inbox directory where the agent automatically picks it up.What Changed
New
strix/hil/packageinput_manager.py-- Core module withrequest_input(),wait_for_response(),list_pending_requests(),clear_inbox(), and a statefulInputManagerclassHILTimeoutErrorexception for timeout handlinginbox/directory with.gitkeep-- the file-drop zone for operator tool outputConfig integration
hil_inbox_pathtoConfigclass, overridable viaHIL_INBOX_PATHenv varTool skill updates
.mdfiles with inbox path references and pipe examplesREADME documentation
Tests
.mdvalidation, and module exportsHow It Works
Dependencies
Includes code from #334 and #336 as base dependencies (vulnerability skills + 25 tool skills).
Key Commits