Skip to content

CM-60929: Add report mode to ai-guardrails install#410

Open
Ilanlido wants to merge 3 commits intomainfrom
CM-60929-report-mode
Open

CM-60929: Add report mode to ai-guardrails install#410
Ilanlido wants to merge 3 commits intomainfrom
CM-60929-report-mode

Conversation

@Ilanlido
Copy link
Collaborator

Summary

  • Add --mode flag (report|block) to ai-guardrails install, defaulting to report
  • Report mode: installs hooks in async non-blocking mode and creates policy file with warn mode
  • Block mode: installs hooks in sync blocking mode and creates policy file with block mode
  • Add sessionStart/SessionStart auth check hook for both Cursor and Claude Code (auto-authenticates on IDE start)
  • Policy file creation merges with existing file on re-install, only updating the mode field
  • Improved hook deduplication to recognize both scan and auth commands

Test plan

  • 14 unit tests covering async/sync configs, sessionStart hooks, and policy file CRUD
  • Manual test: poetry run cycode ai-guardrails install --ide claude-code (report mode default)
  • Manual test: poetry run cycode ai-guardrails install --ide claude-code --mode block
  • Verify re-running install deduplicates hooks correctly
  • Verify switching modes updates policy file without losing customizations

🤖 Generated with Claude Code

…efault

- Add InstallMode enum (report/block) and --mode/-m flag defaulting to report
- Report mode: async non-blocking hooks + warn policy file
- Block mode: sync blocking hooks + block policy file
- Add sessionStart/SessionStart auth check hook for both Cursor and Claude Code
- Policy file merges with existing on re-install, only updating mode
- Improve hook deduplication to recognize both scan and auth commands
- Add 14 tests covering async/sync configs, sessionStart, and policy file creation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Collaborator

@gotbadger gotbadger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please revisit the session start behaviour


# Command used in hooks
CYCODE_SCAN_PROMPT_COMMAND = 'cycode ai-guardrails scan'
CYCODE_AUTH_CHECK_COMMAND = "if cycode status 2>&1 | grep -q 'Is authenticated: False'; then cycode auth 2>&1; fi"
Copy link
Collaborator

@gotbadger gotbadger Mar 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is a very good idea we should do any checks within the application. If we need to do this kind of check/auth we could for example add a flag to the status command. Alternatively you could add a command to check within ai-guardrails namespace like session_start this is probably the best option as it can be expanded for any other requirements

hooks = {event: [{'command': CYCODE_SCAN_PROMPT_COMMAND}] for event in config.hook_events}
command = f'{CYCODE_SCAN_PROMPT_COMMAND} &' if async_mode else CYCODE_SCAN_PROMPT_COMMAND
hooks = {event: [{'command': command}] for event in config.hook_events}
hooks['sessionStart'] = [{'command': CYCODE_AUTH_CHECK_COMMAND}]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

its not actually checking auth its causing the auth to happen if its not authed as written at the moment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants