Skip to content
claudewheel.profile_ops
Edit
On this page

Auth-shadow repair and running-state detection: clears the session credentials that shadow a profile's stored token, and spots live Claude Code sessions.

#claudewheel.profile_ops

#claudewheel.profile_ops

Profile auth-shadow repair and running-state detection.

Profile create/delete/rename live in :mod:claudewheel.profile_store now; this module retains only the fix-auth flow and the session running-state check that callers apply as policy before delegating deletions to the store. That check is a delegate: :mod:claudewheel.session_registry owns every read of Claude Code's per-session registry.

#FixAuthResult

Outcome of fix_auth_shadow(): success or a reason for no-op/failure.

ok: True when the shadow was removed, False otherwise. reason: None on success; "no-token" / "no-shadow" / "unreadable-creds" on failure.

#fix_auth_shadow

python
def fix_auth_shadow(ws: 'Workspace', name: str) -> FixAuthResult

Remove session credentials (claudeAiOauth) that shadow a long-lived token.

Reads the profile's .credentials.json and strips the claudeAiOauth key. Whatever plan-tier fields that block carried are discarded with it: the declared plan lives in the profile's own token entry and is written there by claudewheel's plan picker, never harvested back out of Claude Code's credential file. A file left holding nothing is removed rather than kept as an empty object, which would go on answering "this profile has credentials" to discovery, the inspection report and the permission check.

Zero printing, zero sys.exit -- returns a FixAuthResult describing what happened.

A corrupt token entry raises :class:TokenStoreError (the hard-error contract) -- token resolution cannot proceed and the operator must fix it.

#_is_profile_running

python
def _is_profile_running(ws: 'Workspace', name: str) -> bool

True when a human's Claude Code session is live in this profile.

A delegate to :func:claudewheel.session_registry.has_live_interactive -- the single reader of Claude Code's per-session registry, which parses the sessions/<pid>.json files, filters out phantoms (a stale file, or a PID the kernel has since handed to something else) and classifies each record by kind. Background jobs, daemons and daemon workers are live processes but do not answer True here: they are not a person at a terminal, and the delete flow offers the user a choice about them rather than a veto.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • selfdoc Static Site Generator that builds a project's documentation site directly from its source code, so the docs can never drift from the code they describe, with SEO/AEO, first-class blog, search, and cross-project linking built in
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search