Skip to content

Commit 3e9773c

Browse files
committed
CM-59792-read-file-hook-save-file-path
1 parent d0cd19c commit 3e9773c

File tree

3 files changed

+6
-0
lines changed

3 files changed

+6
-0
lines changed

cycode/cli/apps/ai_guardrails/scan/handlers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ def handle_before_read_file(ctx: typer.Context, payload: AIHookPayload, policy:
170170
scan_id=scan_id,
171171
block_reason=block_reason,
172172
error_message=error_message,
173+
file_path=payload.file_path,
173174
)
174175

175176

cycode/cyclient/ai_security_manager_client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def create_event(
6262
scan_id: Optional[str] = None,
6363
block_reason: Optional['BlockReason'] = None,
6464
error_message: Optional[str] = None,
65+
file_path: Optional[str] = None,
6566
) -> None:
6667
"""Create an AI hook event from hook payload."""
6768
conversation_id = payload.conversation_id
@@ -79,6 +80,7 @@ def create_event(
7980
'mcp_server_name': payload.mcp_server_name,
8081
'mcp_tool_name': payload.mcp_tool_name,
8182
'error_message': error_message,
83+
'file_path': file_path,
8284
}
8385

8486
try:

tests/cli/commands/ai_guardrails/scan/test_handlers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ def test_handle_before_read_file_sensitive_path(
194194
call_args = mock_ctx.obj['ai_security_client'].create_event.call_args
195195
assert call_args.args[2] == AIHookOutcome.BLOCKED
196196
assert call_args.kwargs['block_reason'] == BlockReason.SENSITIVE_PATH
197+
assert call_args.kwargs['file_path'] == '/path/to/.env'
197198

198199

199200
@patch('cycode.cli.apps.ai_guardrails.scan.handlers.is_denied_path')
@@ -215,6 +216,7 @@ def test_handle_before_read_file_no_secrets(
215216
assert result == {'permission': 'allow'}
216217
call_args = mock_ctx.obj['ai_security_client'].create_event.call_args
217218
assert call_args.args[2] == AIHookOutcome.ALLOWED
219+
assert call_args.kwargs['file_path'] == '/path/to/file.txt'
218220

219221

220222
@patch('cycode.cli.apps.ai_guardrails.scan.handlers.is_denied_path')
@@ -238,6 +240,7 @@ def test_handle_before_read_file_with_secrets(
238240
call_args = mock_ctx.obj['ai_security_client'].create_event.call_args
239241
assert call_args.args[2] == AIHookOutcome.BLOCKED
240242
assert call_args.kwargs['block_reason'] == BlockReason.SECRETS_IN_FILE
243+
assert call_args.kwargs['file_path'] == '/path/to/file.txt'
241244

242245

243246
@patch('cycode.cli.apps.ai_guardrails.scan.handlers.is_denied_path')

0 commit comments

Comments
 (0)