commit e47fe19d210798935b02e6cbb61ef0c5e58d8e29
parent 3c2947094700e1f36993d9e85d33f2f5e741371e
Author: Andrew Laack <andrew@laack.co>
Date: Sat, 7 Mar 2026 23:42:13 +0000
Merge pull request #180 from andrewlaack-collab/andrew/messaging
Inform users about subscription support via --agentic
Diffstat:
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
@@ -17,8 +17,9 @@
- **Reviews intent and code**: checks agent conversations for goal adherence and code changes for correctness.
- **Runs anywhere**: from the terminal, as an agent skill, or in CI.
-- **Bring-your-own-model**: works with any provider using your own API keys, no subscription ever.
-- **No data collection**: requests go directly to inference providers, never through our servers.
+- **Bring-your-own-model**: works with any provider using your own API keys.
+- **Works with existing subscriptions**: supports Anthropic and OpenAI subscriptions using [`--agentic`](#usage).
+- **Free and open source**: no account, fees, or data collection. Requests go directly to your inference provider. Licensed under the AGPL-3.0.
<p align="center">
<a href="https://github.com/imbue-ai/vet">
@@ -112,6 +113,12 @@ Compare against a base ref/commit:
vet "Refactor storage layer" --base-commit main
```
+Use Claude Code or Codex instead of LLM APIs (`--agent-harness`: `claude`, `codex`):
+
+```bash
+vet "Implement X without breaking Y" --agentic --agent-harness claude
+```
+
## GitHub PRs (Actions)
Vet reviews pull requests using a reusable GitHub Action.
diff --git a/vet/cli/main.py b/vet/cli/main.py
@@ -660,6 +660,11 @@ def main(argv: list[str] | None = None) -> int:
validate_api_key_for_model(model_id, user_config, registry_config)
except Exception as e:
print(f"vet: {e}", file=sys.stderr)
+ print(
+ "hint: If you have a Claude or Codex subscription, try --agentic to use your\n"
+ " locally installed coding agent CLI instead.",
+ file=sys.stderr,
+ )
return 2
# TODO: Support OFFLINE, UPDATE_SNAPSHOT, and MOCKED modes.
@@ -721,6 +726,11 @@ def main(argv: list[str] | None = None) -> int:
return 1
except MissingAPIKeyError as e:
print(f"vet: {e}", file=sys.stderr)
+ print(
+ "hint: If you have a Claude or Codex subscription, try --agentic to use your\n"
+ " locally installed coding agent CLI instead.",
+ file=sys.stderr,
+ )
return 2
# TODO: This should be refactored so we only need to handle prompt too long errors when context is overfilled.
except (PromptTooLongError, BadAPIRequestError) as e: