Back to skill
Skillv1.0.4

ClawScan security

Ms Todo Oauth · ClawHub's context-aware review of the artifact, metadata, and declared behavior.

Scanner verdict

SuspiciousFeb 13, 2026, 8:41 AM
Verdict
suspicious
Confidence
medium
Model
gpt-5-mini
Summary
The skill appears to implement a Microsoft To Do CLI as described, but it contains a hard-coded Azure client credential (client_id/client_secret) baked into the package and a few documentation/test inconsistencies that warrant caution before installing or running it against your account.
Guidance
What to consider before installing or running this skill: - The package explicitly contains an Azure client_id (visible) and, per SKILL.md, a client_secret embedded in scripts/ms-todo-oauth.py. Hard-coded client secrets in distributed code are risky: they may be leaked, abused, or revoked without your knowledge. Expect the code to use those credentials unless you replace them. - Prefer creating your own Azure app registration and replacing the client_id/client_secret in the code (or better: modify the script to read client_id and client_secret from environment variables or a local config file). If you use the included secret, treat it as untrusted and rotate/revoke it after use. - Tests will run real operations against your Microsoft account (create/delete lists, add/delete tasks). Run tests only on an account you control and are willing to let the test suite modify. Consider creating a disposable Microsoft account for testing. - Inspect scripts/ms-todo-oauth.py yourself before running. Look for the client_secret literal (SKILL.md gives search strings like client_id="ca6ec244…" and client_secret="TwQ8Q…") and remove or replace it. Verify no other remote endpoints or data-exfiltration code exist (the README claims all API calls go to graph.microsoft.com, which matches the visible code, but double-check the rest of the file). - The package documentation and test suite use 'uv run' in many examples; that wrapper may not be installed on your system. The package will still run with python3 directly, but tests/examples may fail if you follow docs verbatim. - If you lack the ability to audit code, do not run this against your primary Microsoft account. Instead, run in an isolated environment and with credentials you can revoke. - If you decide to proceed: (1) audit the repository for the hard-coded secret and remove or replace it, (2) adjust the code to read credentials from environment variables, (3) run tests on a disposable account, and (4) consider scanning the package with additional static analysis tools.

Review Dimensions

Purpose & Capability
noteThe name/description match the code and dependencies: the package uses msal and graph.microsoft.com as expected for a Microsoft To Do CLI. However, the SKILL.md explicitly states there is a generated Azure Client ID and Secret embedded in scripts/ms-todo-oauth.py while the registry metadata lists no required credentials — this is an inconsistency (the embedded secret is related to the skill purpose but should not be treated as an innocuous 'no-credentials' package). The test suite and docs also frequently show the use of the 'uv run' wrapper even though required binaries declared 'none'.
Instruction Scope
noteRuntime instructions stay within the expected scope: they direct an OAuth2 login flow, call Microsoft Graph endpoints, and persist a local token cache at ~/.mstodo_token_cache.json. The docs and tests explicitly instruct running an automated test suite that will create and delete lists in your Microsoft account — this is expected behavior for integration tests but important to know. The SKILL.md also instructs users to find and replace client_id/client_secret values in the Python script, which implies sensitive data is present inside the code rather than being injected via environment variables.
Install Mechanism
okThere is no external install script; this is instruction-and-code only. Dependencies are declared in requirements.txt (msal, requests), which is proportional to the described functionality. No remote downloads or unusual install steps are present.
Credentials
concernThe package appears to include a built-in Azure Client ID (DEFAULT_CLIENT_ID is visible) and the SKILL.md warns that a client_secret is present in scripts/ms-todo-oauth.py. The skill declares no required env vars or primary credential, but the code uses msal.ConfidentialClientApplication (a confidential flow typically requiring a client_secret). Hard-coded client_secret values in source are disproportionate from a security perspective: they expose long-lived credentials and shift trust to whoever published this package. The script also persists tokens to ~/.mstodo_token_cache.json (expected for a CLI but persistent).
Persistence & Privilege
noteThe skill persists OAuth tokens to ~/.mstodo_token_cache.json and registers an atexit handler to save cache — standard for a CLI client. Flags show no 'always: true' and no requests to modify other skills or system-wide configurations. Autonomous invocation is allowed (default), which is normal; combined with the embedded credential this increases blast radius somewhat, but the skill itself does not request elevated system privileges.