The cross-platform Tabular Editor CLI (`te`) — a single self-contained binary for Windows, macOS and Linux that inspects, edits, validates, deploys, refreshes and tests Power BI and Analysis Services semantic models, with structured JSON/CSV/TMDL output and safe-by-default preview diffs. Distinct from Tabular Editor 2's TabularEditor.exe. Use when the user mentions: te CLI, Tabular Editor CLI, te auth login, te bpa run, te deploy, te refresh, te test run, te vertipaq, te diff, te script, cros...
Scanned 10/6/2026
npx -y skills add santoshkanthety/powerbi-agent --skill powerbi-te-cli --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Powerbi Te Cli?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/santoshkanthety-powerbi-te-cli)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: powerbi-te-cli
description: The cross-platform Tabular Editor CLI (`te`) — a single self-contained binary for Windows, macOS and Linux that inspects, edits, validates, deploys, refreshes and tests Power BI and Analysis Services semantic models, with structured JSON/CSV/TMDL output and safe-by-default preview diffs. Distinct from Tabular Editor 2's TabularEditor.exe. Use when the user mentions: te CLI, Tabular Editor CLI, te auth login, te bpa run, te deploy, te refresh, te test run, te vertipaq, te diff, te script, cross-platform Tabular Editor, Tabular Editor on Mac or Linux, model CI on Linux, headless semantic model edit.
license: MIT
---
# Tabular Editor CLI (`te`)
`te` is a single self-contained binary that runs on Windows, macOS and Linux, built on the
same engine as Tabular Editor 3. It is the first way to do real semantic-model work — BPA,
deploy, refresh, VertiPaq analysis, assertion tests — from a Linux CI runner without a
Windows agent and without .NET Framework.
**Three different products, do not confuse them:**
| Tool | Executable | Platform | This skill |
|---|---|---|---|
| Tabular Editor 2 | `TabularEditor.exe` | Windows only, free | no — `powerbi-te2-cli` |
| Tabular Editor 3 | `TabularEditor3.exe` | Windows GUI, licensed | no — see `powerbi-te-docs` |
| **Tabular Editor CLI** | `te` | Windows / macOS / Linux | **yes** |
Flags and scripts are not portable between them. A TE2 invocation (`-A`, `-D`, `-S`, `-B`)
will not work here; `te` uses verb-based subcommands.
## Status — check this first
`te` is in **Limited Public Preview**. During the preview no licence is required, only a
Tabular Editor account — but **the preview build stops working after 2026-10-31**, and
licensing will be required at general availability.
Consequences to state before anyone builds on it:
- A pipeline that depends on `te` will break at the preview cutoff unless the binary is
refreshed. Do not put it on the critical path of a release train without a fallback.
- The fallback is `powerbi-te2-cli` (free, Windows, stable) or an XMLA/TOM path via
`pbi-agent model`.
- Pin the downloaded version and record it, so a CI failure is diagnosable as a version
change rather than a model change.
## Setup
1. Register or sign in at [tabulareditor.com](https://tabulareditor.com), then download the
binary for the platform.
2. `te auth login` — interactive device-code sign-in to Power BI / Fabric.
3. `te --help` and `te <command> --help` — **do this before first use of any command.**
The surface is moving during preview. Read the installed binary's help rather than trusting
any written reference, including this one. Where help and this file disagree, help wins.
```bash
te --version # record this in the pipeline log
te auth login
te --help
```
Connection state: `te profile` manages named connection profiles, `te session` manages
session state, `te config` sets CLI defaults. Set a profile once per environment rather than
repeating connection strings — and keep profile secrets out of the repo.
## Command families
Verified family names and representative commands; confirm exact arguments with `--help`.
| Family | Commands | Use for |
|---|---|---|
| Init / save | `te init`, `te save-as` | create, convert between `.bim` / TMDL / PBIP |
| Edit | `te set`, `te add`, `te remove`, `te move` | property and object changes without a GUI |
| Inspect | `te list`, `te find`, `te diff`, `te deps` | enumerate objects, locate usage, compare, trace dependencies |
| Analysis & quality | `te validate`, `te bpa run`, `te util`, `te vertipaq` | validation, Best Practice Analyzer, VertiPaq analysis |
| Execution | `te query`, `te script`, `te macro` | DAX queries, C# scripts, saved macros |
| Deploy & refresh | `te deploy`, `te refresh` | push a model, trigger a refresh |
| Testing | `te test run` | assertion tests against a model |
| Shell | `te interactive`, `te completion` | REPL, shell completions |
## Design properties that matter in practice
- **Structured output** — JSON, CSV and TMDL. Parse JSON; never scrape the human-readable
table. Pass the output format flag explicitly in scripts rather than relying on a default.
- **Non-interactive mode** — a global flag suppresses prompts. Set it in every CI invocation.
A command that blocks on a prompt in a pipeline hangs until the job times out.
- **Safe by default** — edits preview a diff before applying. In CI you will be disabling
that confirmation; that makes reviewing the diff locally first a requirement, not a nicety.
- **Clear errors and exit codes** — errors go to stderr with predictable exit codes. Check the
exit code. Do not infer success from empty stderr or from the absence of the word "error".
## Workflows
### BPA in CI, on Linux
```bash
te auth login # or a profile with CI credentials
te bpa run <model-or-connection> --help # confirm flags for this build
# then: run BPA, emit JSON, fail the job on any error-severity finding
```
Rules for the gate: fail only on the severities the team agreed to fail on, emit the full
finding list as a build artifact, and keep the rule file in the repo under version control so
a new finding is traceable to a rule change. Rule authoring lives in `powerbi-bpa-rules`.
### Review a change before it reaches the model
```bash
te diff <source> <target> # what this deploy would actually change
te deps <object> # what breaks if this object changes
te validate <model>
```
`te diff` before `te deploy` is the habit to build. It converts "deploy and hope" into a
reviewable change set, and it catches the two failures that hurt most: an unintended
property reset, and a rename that orphans a report visual.
### Deploy
```bash
te diff <src> <target> # 1. always
te deploy <src> <target> --help
```
Before deploying to a shared or production model:
- Show the user the diff summary — objects added, removed, changed — and get an explicit yes.
- **Never deploy over a model whose diff includes removals you cannot explain.** A removal in
a deploy diff is usually a stale source, not an intended deletion.
- Deploy to a dev workspace first where one exists. Partial deployment options (what gets
overwritten vs preserved: roles, partitions, data sources) differ by command — read `--help`
and state which you are using.
### Refresh and test
```bash
te refresh <model> --help # confirm scope: full, table, partition
te test run <suite>
```
A refresh draws capacity. On a shared or production capacity, state the expected CU cost
first — `powerbi-fabric-capacity`. Refresh strategy itself (incremental, partitions, policy)
is `powerbi-refresh-semantic-model`.
### VertiPaq analysis
```bash
te vertipaq <model> --help
```
This is the measurement that makes `powerbi-performance-scale` and `powerbi-dax-performance`
actionable: column cardinality, dictionary and hierarchy sizes, compression, and which
columns are actually costing memory. Capture it before and after an optimisation and report
both numbers.
## Guardrails
- **Discovery before invocation.** `te <command> --help` on first use in a session. The
preview surface changes between builds.
- **Never run an edit, deploy or refresh against a production model without naming the model
and the change and getting a yes.** `te` is headless; there is no GUI prompt to catch a
mistake.
- **No credentials on the command line.** Use `te auth login` or a profile; command-line
arguments are visible to other processes on the host.
- **Record the binary version** in any pipeline that uses it, given the preview cutoff.
- If a command fails on permissions, report the missing right. Do not retry through a
different tool to get around it.
## Related skills
| Need | Skill |
|---|---|
| Windows-only, free, stable CLI | `powerbi-te2-cli` |
| Tabular Editor documentation lookup, scripting cookbook | `powerbi-te-docs` |
| C# scripts the CLI executes | `powerbi-c-sharp-scripting` |
| BPA rule authoring | `powerbi-bpa-rules` |
| What to do with VertiPaq findings | `powerbi-performance-scale`, `powerbi-dax-performance` |
| Refresh design | `powerbi-refresh-semantic-model` |
| CU cost of a refresh or deploy | `powerbi-fabric-capacity` |
| TMDL the CLI reads and writes | `powerbi-tmdl` |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!