Flags conda environment.yml and .condarc lines that pull from Anaconda's paid repository (defaults, anaconda, repo.anaconda.com, pkgs/main pins) — required licence at 200+ staff — and shows the conda-forge fix. Runs entirely in your browser — nothing is uploaded.
Same engine as the VS Code extension, byte for byte.
Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.
VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmDocker Hubext install ReadyStack.conda-channel-license-lint npx @readystack/conda-channel-license-lint <file> docker run --rm -v "$PWD:/w" getreadystack/conda-channel-license-lint /w
Team? One key for every ReadyStack linter, 5 seats, $149 once
This page is the working piece. The full pack has everything below.
Finds every environment.yml and .condarc line that pulls from Anaconda's licensed repository
Anaconda Business: $50 per user per month; conda-forge is free
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

6 paid Anaconda channel lines sat in one churn-model environment.yml we linted — the kind of file a Python data team at a company with 200 or more people copies from repo to repo.
Anaconda's Terms of Service require a paid licence for organisations of 200 or more people that use the defaults channel. The anaconda channel on anaconda.org is a mirror of defaults and carries the same terms. conda-forge, bioconda and other community channels stay free. Anaconda lists its Business plan at $50 per user per month.
The file looked ordinary:
channels:
- defaults
- anaconda
- https://repo.anaconda.com/pkgs/r
- pkgs/msys2
dependencies:
- python=3.11
- pkgs/main::numpy=1.26
- defaults::pandas
Conda License Lint reports 6 findings on it, one per line that reaches Anaconda's repository:
- defaults is short-hand for repo.anaconda.com/pkgs/main and pkgs/r, plus pkgs/msys2 on Windows.pkgs/msys2 resolves to the same repository.pkgs/main::numpy=1.26 and defaults::pandas.The two pins are the ones a quick search misses. A channel::package prefix tells conda where to fetch that one package, so it goes to Anaconda even after someone cleans up the channels list.
The fixed file lists - conda-forge and - nodefaults, pins conda-forge::pandas, and the linter reports 0 findings on it.
Why nodefaults matters: conda env create adds the channels from your conda configuration after the ones in the file. Miniconda and Anaconda installers put defaults there. So a file that lists only conda-forge still reaches defaults unless its list ends with - nodefaults. The linter flags that case as a warning, implicit-defaults, and points at the channels line.
The machine configuration is the other half. A .condarc with default_channels: pointing at repo.anaconda.com decides what the word defaults means on that machine. Each such entry is a condarc-default-channels finding. On the three-line Miniconda-style .condarc we tested, the linter reports 3 findings: the defaults channel and two default_channels URLs.
There is a CI angle too. Since Anaconda Distribution 2025.06-0 the installers ship the conda-anaconda-tos plugin, and the channels repo.anaconda.com/pkgs/main, pkgs/r and pkgs/msys2 need conda tos accept, or the CONDA_PLUGINS_AUTO_ACCEPT_TOS variable, before a non-interactive build uses them. A build that suddenly stops at a Terms of Service prompt is a sign the pipeline is still on defaults.
The 8 rules in the extension:
Findings land in the VS Code Problems panel with the line number, the reason and the conda-forge replacement. The files it watches are environment*.yml, environment*.yaml, .condarc and condarc.
The free version checks the file you have open with no key, and the web page runs the same engine: paste a file, get the same findings. The full version scans every environment file and .condarc in a workspace in one run and exports a single licence-audit report you can hand to procurement or security.
It is not legal advice. Whether your organisation holds an Anaconda licence is between you and Anaconda; the linter shows which lines reach Anaconda's repository.
It runs 8 rules on conda files: defaults channel, anaconda mirror channel, repo.anaconda.com URLs, pkgs/main, pkgs/r and pkgs/msys2 short names, defaults:: or pkgs/main:: dependency pins, .condarc default_channels, a missing nodefaults line, and conda-forge mixed with an Anaconda channel. Each finding gives the line number, the reason and the conda-forge fix, in the Problems panel.
Python, data science and ML platform teams at companies, nonprofits or government bodies with 200 or more people, where Anaconda's Terms of Service require a paid licence to use the defaults channel. It suits the engineer who owns the environment.yml files, the Dockerfiles' conda step and the CI images, and has to answer a licence question from procurement or security.
A grep for defaults misses three things: dependency pins such as defaults::pandas or pkgs/main::numpy=1.26, the anaconda channel that mirrors defaults, and files with no nodefaults line, where conda env create still adds defaults from the conda configuration Miniconda installs. A chatbot reading one file does not see your .condarc. This linter checks every line by rule.
Free, with no key: every finding and fix for the environment.yml or .condarc open in the editor, and the same engine in the web version. The full version, one payment of $29, scans every environment file and .condarc in the workspace in one run and exports a single licence-audit report you keep for procurement or a security review.
Anaconda lists its Business plan at $50 per user per month, and plans above 15 seats go to sales for custom pricing. conda-forge is free for everyone. Moving an environment file from defaults to conda-forge plus nodefaults is usually a few line edits once you know which lines reach repo.anaconda.com, which is what the linter lists.
A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. Conda License Lint: Anaconda defaults channel checks the file you open against 8 rules from a rule set dated 2026-09-27, and points at the exact line with the fix. For a filing, an audit or a client you need that dated result on your own files.
One question, answered by the person who built it. Your email only if you want the answer sent.