[{"data":1,"prerenderedAt":119},["ShallowReactive",2],{"docs:user-interfaces/cli":3},{"title":4,"navTitle":4,"description":5,"api":6,"html":7,"toc":8,"path":108,"tab":109,"group":110,"prev":111,"next":114,"markdownUrl":117,"sourceUrl":118,"lastModified":6},"CLI reference","Every command and flag of the Standard Agents CLI, with exit codes, credential locations, and build failure recovery",null,"\u003Cp>The Standard Agents CLI is the \u003Ccode>@standardagents/cli\u003C/code> package. Its command is \u003Ccode>agents\u003C/code>. You do not need to install it:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">npx\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> @standardagents/cli@latest\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> &#x3C;\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">comman\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">d\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Inside a project that has the package installed, \u003Ccode>pnpm exec agents &#x3C;command>\u003C/code> or \u003Ccode>npx agents &#x3C;command>\u003C/code> runs the same program. The examples on this page write \u003Ccode>agents &#x3C;command>\u003C/code> for both forms.\u003C/p>\n\u003Cp>The CLI supports Node.js 22 (22.12 or newer) and Node.js 24. An older Node.js stops with the version to install. An untested release line above Node.js 22 prints a warning and continues. \u003Ccode>git-credential\u003C/code> skips the version check.\u003C/p>\n\u003Cp>\u003Ccode>agents --help\u003C/code> lists the commands, and \u003Ccode>agents &#x3C;command> --help\u003C/code> lists the flags of one command. \u003Ccode>agents --version\u003C/code> prints the CLI version. In a terminal, \u003Ccode>agents\u003C/code> with no command opens the home screen of the \u003Ca href=\"#full-screen-app\">full-screen app\u003C/a>. Without a terminal, it prints the help text on the error stream and exits with code 1.\u003C/p>\n\u003Ch2 id=\"full-screen-app\">\u003Ca class=\"docs-anchor\" href=\"#full-screen-app\" aria-label=\"Link to this section\">\u003C/a>Full-screen app\u003C/h2>\n\u003Cp>On an interactive terminal, \u003Ccode>agents\u003C/code> with no command, \u003Ccode>agents init\u003C/code>, and \u003Ccode>agents login\u003C/code> run as one full-screen app. The app uses the alternate screen of the terminal, so your scrollback is unchanged while it runs.\u003C/p>\n\u003Cul>\n\u003Cli>The top bar shows the CLI version, the signed-in account, and the current directory.\u003C/li>\n\u003Cli>The body shows the steps of the run with their state, and one main region for the active step: the sign-in URL, the output of the clone and the install, or the log of the dev server.\u003C/li>\n\u003Cli>The bottom bar shows what happens now, the elapsed or remaining time, and the keys that work.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Screen\u003C/th>\n\u003Cth>Keys\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Home\u003C/td>\n\u003Ctd>\u003Ccode>↑\u003C/code> \u003Ccode>↓\u003C/code> or \u003Ccode>j\u003C/code> \u003Ccode>k\u003C/code> to move, \u003Ccode>Enter\u003C/code> to run the command, \u003Ccode>q\u003C/code> to quit\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Sign-in\u003C/td>\n\u003Ctd>\u003Ccode>o\u003C/code> to open the browser again, \u003Ccode>c\u003C/code> to copy the sign-in URL, \u003Ccode>Ctrl-C\u003C/code> to cancel\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Clone, install\u003C/td>\n\u003Ctd>\u003Ccode>PgUp\u003C/code> \u003Ccode>PgDn\u003C/code> to scroll the output, \u003Ccode>Ctrl-C\u003C/code> to cancel\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Dev server\u003C/td>\n\u003Ctd>\u003Ccode>o\u003C/code> to open the Builder, \u003Ccode>PgUp\u003C/code> \u003Ccode>PgDn\u003C/code> to scroll the log, \u003Ccode>q\u003C/code> or \u003Ccode>Ctrl-C\u003C/code> to stop the server and quit\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Failure, confirmation\u003C/td>\n\u003Ctd>\u003Ccode>Enter\u003C/code> to close\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The home screen lists the commands that work in the current directory. For each one it shows what the command does and the command line that runs it. \u003Ccode>init\u003C/code> and \u003Ccode>login\u003C/code> stay in the app. Every other command runs in line mode after the app closes.\u003C/p>\n\u003Cp>When the app closes, it prints the record of the run in the normal screen: one line per finished step, then the summary or the failure with its next steps. A cancelled run prints the same messages as line mode, and the exit codes are the same.\u003C/p>\n\u003Cp>The app follows the size of the terminal while it runs:\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Terminal size\u003C/th>\n\u003Cth>Layout\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>140 columns or more\u003C/td>\n\u003Ctd>Step list in a left column of 36 cells. The main region is at most 100 cells wide.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>100 to 139 columns\u003C/td>\n\u003Ctd>Step list in a left column of 30 cells.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>80 to 99 columns\u003C/td>\n\u003Ctd>One column. The step list is one line, for example \u003Ccode>Step 3 of 6 · Clone\u003C/code>.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>60 to 79 columns, or fewer than 20 rows\u003C/td>\n\u003Ctd>One column, a top bar with the name and version only, and short key hints.\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>A long URL or path is shortened with an ellipsis and stays in its own region. The output of a command keeps at least three rows.\u003C/p>\n\u003Ch3 id=\"line-mode\">\u003Ca class=\"docs-anchor\" href=\"#line-mode\" aria-label=\"Link to this section\">\u003C/a>Line mode\u003C/h3>\n\u003Cp>Line mode prints each step as a line and draws no screen. The CLI uses line mode in each of these cases:\u003C/p>\n\u003Cul>\n\u003Cli>You pass \u003Ccode>--no-tui\u003C/code>, or the \u003Ccode>NO_TUI\u003C/code> environment variable has a nonempty value other than \u003Ccode>0\u003C/code> or \u003Ccode>false\u003C/code> (case-insensitive).\u003C/li>\n\u003Cli>The standard input or the standard output is not a terminal.\u003C/li>\n\u003Cli>The \u003Ccode>CI\u003C/code> environment variable is set, or \u003Ccode>TERM\u003C/code> is \u003Ccode>dumb\u003C/code>.\u003C/li>\n\u003Cli>The terminal is smaller than 60 columns by 12 rows.\u003C/li>\n\u003Cli>The command runs with \u003Ccode>--json\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> init\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --no-tui\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">NO_TUI\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">=\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">1\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\"> agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> login\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Ch2 id=\"commands\">\u003Ca class=\"docs-anchor\" href=\"#commands\" aria-label=\"Link to this section\">\u003C/a>Commands\u003C/h2>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Command\u003C/th>\n\u003Cth>Purpose\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#init\">\u003Ccode>init\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Create a project on the platform, clone it, and start it locally\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#login\">\u003Ccode>login\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Sign in to your account on this machine\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#whoami\">\u003Ccode>whoami\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Print the account this machine is signed in to\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#logout\">\u003Ccode>logout\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Remove and revoke stored credentials\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#git-credential\">\u003Ccode>git-credential\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>The Git credential helper that the CLI registers\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#scaffold\">\u003Ccode>scaffold\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Add Standard Agents to an existing Vite project\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#support-files\">\u003Ccode>support-files\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Write the local support files of a cloned project\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#init-chat\">\u003Ccode>init-chat\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Create a chat front end for a running instance\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#deploy\">\u003Ccode>deploy\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Push the current branch and follow the platform build\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#builds\">\u003Ccode>builds\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Read builds and build logs, and retry a failed build\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#rollback\">\u003Ccode>rollback\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Make an earlier production build live again\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#redeploy\">\u003Ccode>redeploy\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Deploy the live production build again\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#skill\">\u003Ccode>skill\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Install the coding skill for your coding agent\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#current-models\">\u003Ccode>current-models\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Print the current model guide\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#available-models\">\u003Ccode>available-models\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>List the model IDs of one provider\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#pack\">\u003Ccode>pack\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Pack an agent and its dependencies into a package\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#unpack\">\u003Ccode>unpack\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Unpack a packed agent into editable files\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#list-packed\">\u003Ccode>list-packed\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>List the packed agents in a project\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#diag\">\u003Ccode>diag\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Diagnose a running instance\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"#terms\">\u003Ccode>terms\u003C/code>\u003C/a>\u003C/td>\n\u003Ctd>Read and accept the Standard Agents terms\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"exit-codes\">\u003Ca class=\"docs-anchor\" href=\"#exit-codes\" aria-label=\"Link to this section\">\u003C/a>Exit codes\u003C/h2>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Code\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>0\u003C/code>\u003C/td>\n\u003Ctd>The command did what it reports.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>1\u003C/code>\u003C/td>\n\u003Ctd>The command failed, or a required step was not completed. The output names the cause and, where there is one, the command to run next. An unknown command or flag also exits with code 1.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>130\u003C/code>, \u003Ccode>143\u003C/code>\u003C/td>\n\u003Ctd>You stopped \u003Ccode>init\u003C/code> with Ctrl-C (\u003Ccode>130\u003C/code>) or the process received a termination signal (\u003Ccode>143\u003C/code>).\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>\u003Ccode>deploy\u003C/code>, \u003Ccode>builds\u003C/code>, \u003Ccode>rollback\u003C/code>, and \u003Ccode>redeploy\u003C/code> share these codes. Their \u003Ccode>--help\u003C/code> output lists them:\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Code\u003C/th>\n\u003Cth>Meaning\u003C/th>\n\u003Cth>Next step\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>0\u003C/code>\u003C/td>\n\u003Ctd>Done. For a wait: the build was deployed\u003C/td>\n\u003Ctd>None\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>1\u003C/code>\u003C/td>\n\u003Ctd>The build failed, or the platform refused the request\u003C/td>\n\u003Ctd>Read \u003Ccode>agents builds logs\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>2\u003C/code>\u003C/td>\n\u003Ctd>The command line, the checkout, or the named build is not usable\u003C/td>\n\u003Ctd>Read the message\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>3\u003C/code>\u003C/td>\n\u003Ctd>Not signed in, or the command needs an account sign-in\u003C/td>\n\u003Ctd>Run \u003Ccode>npx @standardagents/cli@latest login\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>4\u003C/code>\u003C/td>\n\u003Ctd>The platform needs the terms accepted before it builds\u003C/td>\n\u003Ctd>Run \u003Ca href=\"#terms\">\u003Ccode>terms accept\u003C/code>\u003C/a>, then \u003Ccode>agents builds retry\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>5\u003C/code>\u003C/td>\n\u003Ctd>The time limit passed while the build was still in progress\u003C/td>\n\u003Ctd>Run \u003Ccode>agents builds status --wait\u003C/code>, or raise \u003Ccode>--timeout\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>\u003Ca href=\"#terms\">\u003Ccode>terms\u003C/code>\u003C/a> uses codes \u003Ccode>2\u003C/code> and \u003Ccode>3\u003C/code> with its own meanings: a confirmation is needed and nothing was recorded (\u003Ccode>2\u003C/code>), or you are not signed in (\u003Ccode>3\u003C/code>).\u003C/p>\n\u003Cp>Three results exit with code 0 although the work is not finished. Check the output for them in a script:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>deploy\u003C/code> prints \u003Ccode>Only the push was verified\u003C/code> when it cannot read the build. See \u003Ca href=\"#deploy\">\u003Ccode>deploy\u003C/code>\u003C/a>.\u003C/li>\n\u003Cli>\u003Ccode>deploy --no-wait\u003C/code> returns after the push and does not follow the build.\u003C/li>\n\u003Cli>\u003Ccode>unpack\u003C/code> without a package name lists the packages and unpacks nothing.\u003C/li>\n\u003C/ul>\n\u003Ch3 id=\"json-output\">\u003Ca class=\"docs-anchor\" href=\"#json-output\" aria-label=\"Link to this section\">\u003C/a>JSON output\u003C/h3>\n\u003Cp>Every command writes errors and warnings to stderr, and status lines and results to stdout.\u003C/p>\n\u003Cp>With \u003Ccode>--json\u003C/code>, stdout holds exactly one JSON document, and status lines move to stderr. \u003Ccode>diag tail --json\u003C/code> is the exception: it prints one JSON frame per line.\u003C/p>\n\u003Cp>For \u003Ccode>available-models\u003C/code>, \u003Ccode>list-packed\u003C/code>, and the \u003Ccode>diag\u003C/code> subcommands, a command that exits with a nonzero code prints a document with an \u003Ccode>error\u003C/code> member. \u003Ccode>error.code\u003C/code> and \u003Ccode>error.message\u003C/code> are always present. An unknown command or flag, or a missing argument, prints the same document with the code \u003Ccode>usage_error\u003C/code> whenever \u003Ccode>--json\u003C/code> is among the arguments.\u003C/p>\n\u003Cp>The other commands that accept \u003Ccode>--json\u003C/code> print their own documents. The README of the \u003Ccode>@standardagents/cli\u003C/code> package shows each document and lists the error codes.\u003C/p>\n\u003Ch2 id=\"run-without-a-terminal\">\u003Ca class=\"docs-anchor\" href=\"#run-without-a-terminal\" aria-label=\"Link to this section\">\u003C/a>Run without a terminal\u003C/h2>\n\u003Cp>Scripts, CI jobs, and coding agents have no interactive terminal. In that case a command that needs an answer exits with code 1 and names the flag to pass.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Command\u003C/th>\n\u003Cth>What to pass without a terminal\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>init\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--no-open\u003C/code>. The command prints the sign-in URL and waits until a person completes the sign-in in a browser, or until the session expires.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>login\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--bootstrap-stdin\u003C/code> with the setup code on the standard input, which needs no browser. \u003Ccode>--bootstrap-file &#x3C;path>\u003C/code> and \u003Ccode>--bootstrap &#x3C;code>\u003C/code> do the same. \u003Ccode>--no-open\u003C/code> prints the sign-in URL and waits instead.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>init-chat\u003C/code>\u003C/td>\n\u003Ctd>A project name, and either \u003Ccode>--yes\u003C/code> or all of \u003Ccode>--framework\u003C/code>, \u003Ccode>--instance-url\u003C/code>, and \u003Ccode>--package-manager\u003C/code>. The command then installs dependencies and exits without starting the dev server.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>pack\u003C/code>\u003C/td>\n\u003Ctd>The agent name, when the project has more than one agent.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>skill\u003C/code>\u003C/td>\n\u003Ctd>Nothing. It installs the \u003Ccode>agents\u003C/code> target unless you pass \u003Ccode>--agent\u003C/code>.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>rollback\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--yes\u003C/code>. Without it the command exits with code 2 and changes nothing.\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>terms accept\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--agree --terms-version &#x3C;version> --privacy-version &#x3C;version>\u003C/code>, only after the person who is signed in says yes. See \u003Ca href=\"#terms\">\u003Ccode>terms\u003C/code>\u003C/a>.\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Setting \u003Ccode>STANDARD_AGENTS_BROWSER=none\u003C/code> has the same effect as \u003Ccode>--no-open\u003C/code> for \u003Ccode>init\u003C/code> and \u003Ccode>login\u003C/code>.\u003C/p>\n\u003Cp>\u003Ccode>STANDARD_AGENTS_BROWSER\u003C/code> can also name the browser these two commands open: an application name on macOS and Windows (\u003Ccode>\"Google Chrome\"\u003C/code>), or a command on Linux (\u003Ccode>firefox\u003C/code>). When the browser cannot be opened, the command prints a warning, and waits while you open the printed sign-in URL yourself.\u003C/p>\n\u003Cp>A headless sign-in, deployment, and result check:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># The setup code comes from the project's Overview page in the dashboard.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># Standard input keeps it out of the process list, where an argument is visible.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#0184BC;--shiki-dark:#79B8FF\">printf\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> '%s'\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> \"\u003C/span>\u003Cspan style=\"--shiki-light:#E45649;--shiki-dark:#E1E4E8\">$SETUP_CODE\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">\"\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> |\u003C/span>\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\"> npx\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> @standardagents/cli@latest\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> login\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --bootstrap-stdin\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># Exit code 0: the build is live. Exit code 1: the push or the build failed.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># Exit code 4: the terms need acceptance. Exit code 5: the wait timed out.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">npx\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> @standardagents/cli@latest\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> deploy\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --timeout\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> 600\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --json\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># One JSON document that describes the build of the checked-out commit.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">npx\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> @standardagents/cli@latest\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> status\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --json\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Ch2 id=\"platform-api-address\">\u003Ca class=\"docs-anchor\" href=\"#platform-api-address\" aria-label=\"Link to this section\">\u003C/a>Platform API address\u003C/h2>\n\u003Cp>\u003Ccode>init\u003C/code>, \u003Ccode>login\u003C/code>, \u003Ccode>logout\u003C/code>, \u003Ccode>builds\u003C/code>, \u003Ccode>terms\u003C/code>, and the Git credential helper use the first address that one of these names:\u003C/p>\n\u003Col>\n\u003Cli>The flag of the command: \u003Ccode>--endpoint &#x3C;url>\u003C/code> or \u003Ccode>--api-url &#x3C;url>\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>STANDARD_AGENTS_API_URL\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>PLATFORM_ENDPOINT\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>STANDARD_AGENTS_PLATFORM_URL\u003C/code>\u003C/li>\n\u003Cli>\u003Ccode>https://api.standardagents.ai\u003C/code>\u003C/li>\n\u003C/ol>\n\u003Cp>The Git credential helper and \u003Ccode>builds\u003C/code> read the same three variables from the \u003Ccode>.dev.vars\u003C/code> of your project after the environment.\u003C/p>\n\u003Cp>\u003Ccode>--endpoint\u003C/code> and \u003Ccode>--api-url\u003C/code> are two names for one option, and every command that takes a platform address accepts both. The help of \u003Ccode>init\u003C/code> lists \u003Ccode>--api-url\u003C/code>; the help of the other commands lists \u003Ccode>--endpoint\u003C/code>. When a command line has both, the CLI uses \u003Ccode>--api-url\u003C/code>.\u003C/p>\n\u003Cp>The CLI sends your session or API key to this address, so the address must use HTTPS. Plain HTTP is accepted only for this machine: \u003Ccode>localhost\u003C/code>, \u003Ccode>127.0.0.1\u003C/code>, or \u003Ccode>[::1]\u003C/code>. For any other address the command exits with code 1 before it sends a request, and the message shows the \u003Ccode>https://\u003C/code> address to use. An address that contains a user name or a password is refused in the same way.\u003C/p>\n\u003Cp>A request that carries your session, API key, or setup code is never redirected. When the platform answers with a redirect, the command stops and names the host. Check the platform address.\u003C/p>\n\u003Ch2 id=\"request-time-limits\">\u003Ca class=\"docs-anchor\" href=\"#request-time-limits\" aria-label=\"Link to this section\">\u003C/a>Request time limits\u003C/h2>\n\u003Cp>Each request to the platform, to an instance, or to the model guide ends after 30 seconds without a complete answer (15 seconds for each model guide address). The message names the host that did not answer and the command to run next. Waiting for a browser sign-in or for a build has its own limit: the lifetime of the sign-in session, or \u003Ccode>--timeout\u003C/code>.\u003C/p>\n\u003Ch2 id=\"where-credentials-are-stored\">\u003Ca class=\"docs-anchor\" href=\"#where-credentials-are-stored\" aria-label=\"Link to this section\">\u003C/a>Where credentials are stored\u003C/h2>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Location\u003C/th>\n\u003Cth>What it holds\u003C/th>\n\u003Cth>Written by\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>.dev.vars\u003C/code> in the project\u003C/td>\n\u003Ctd>\u003Ccode>STANDARD_AGENTS_API_KEY\u003C/code> (the project API key) and the platform address\u003C/td>\n\u003Ctd>\u003Ccode>init\u003C/code>, \u003Ccode>login\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>The macOS Keychain, service \u003Ccode>standardagents-cli\u003C/code>\u003C/td>\n\u003Ctd>On macOS, the account session and the account API key of your sign-in for this machine\u003C/td>\n\u003Ctd>\u003Ccode>login\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>auth-state.json\u003C/code> in the CLI configuration directory\u003C/td>\n\u003Ctd>The record of your sign-in for this machine. It also holds the account session and the account API key where the Keychain is not used\u003C/td>\n\u003Ctd>\u003Ccode>login\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Global Git configuration\u003C/td>\n\u003Ctd>The credential helper and \u003Ccode>useHttpPath\u003C/code>, both for \u003Ccode>git.standardagents.ai\u003C/code> and \u003Ccode>git.standardagentbuilder.com\u003C/code> only\u003C/td>\n\u003Ctd>\u003Ccode>login\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Git configuration of the cloned repository\u003C/td>\n\u003Ctd>The same credential helper, for that repository\u003C/td>\n\u003Ctd>\u003Ccode>init\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The CLI configuration directory is \u003Ccode>$XDG_CONFIG_HOME/standardagents\u003C/code> when \u003Ccode>XDG_CONFIG_HOME\u003C/code> is set. Otherwise it is \u003Ccode>~/.config/standardagents\u003C/code> on macOS and Linux, and \u003Ccode>%APPDATA%\\standardagents\u003C/code> on Windows.\u003C/p>\n\u003Cp>The CLI writes \u003Ccode>.dev.vars\u003C/code> and \u003Ccode>auth-state.json\u003C/code> so that only your user can read them. Before each write to \u003Ccode>.dev.vars\u003C/code>, the CLI adds \u003Ccode>.dev.vars\u003C/code> and \u003Ccode>.agents\u003C/code> to your \u003Ccode>.gitignore\u003C/code> when Git does not ignore them. When Git tracks \u003Ccode>.dev.vars\u003C/code>, the CLI writes no credential into it and prints the \u003Ccode>git rm --cached\u003C/code> command that stops the tracking.\u003C/p>\n\u003Cp>Your sign-in is saved once for the machine. No project file holds an account session. Releases through 0.45.5 saved a project session in \u003Ccode>.agents/bootstrap-session.json\u003C/code> and in \u003Ccode>.dev.vars\u003C/code>. No command reads those values any more, and \u003Ccode>logout\u003C/code> removes them. If you signed in only with that project sign-in, run \u003Ccode>npx @standardagents/cli@latest login\u003C/code> once.\u003C/p>\n\u003Cp>On macOS, \u003Ccode>login\u003C/code> keeps the account session and the account API key in the Keychain, and \u003Ccode>auth-state.json\u003C/code> holds no secret. The secret never appears in the arguments of a process. On Linux and Windows the CLI supports no credential store, so \u003Ccode>auth-state.json\u003C/code> holds both values, readable only by your user. The same file is used on macOS in two cases:\u003C/p>\n\u003Cul>\n\u003Cli>The Keychain is not available, for example because it is locked in an SSH session. \u003Ccode>login\u003C/code> says so.\u003C/li>\n\u003Cli>You set \u003Ccode>STANDARD_AGENTS_CREDENTIAL_STORE=file\u003C/code> when you run \u003Ccode>login\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>A sign-in that an earlier release saved in \u003Ccode>auth-state.json\u003C/code> keeps working. It moves to the Keychain the next time you run \u003Ccode>login\u003C/code> on macOS. A sign-in saved from a desktop session is in the Keychain, which an SSH session cannot read until you run \u003Ccode>security unlock-keychain\u003C/code>; \u003Ccode>whoami\u003C/code>, \u003Ccode>terms\u003C/code>, the build commands, and the credential helper say so. To use one sign-in from both, run \u003Ccode>login\u003C/code> with \u003Ccode>STANDARD_AGENTS_CREDENTIAL_STORE=file\u003C/code>.\u003C/p>\n\u003Cp>The credential helper stores no password. Each time Git contacts a Standard Agents repository, the helper requests a short-lived token from the platform. It uses the project API key from the nearest \u003Ccode>.dev.vars\u003C/code> first. When the platform refuses that key, the helper names it on the error stream and tries your sign-in for this machine.\u003C/p>\n\u003Cp>These environment variables also sign the CLI in, and they take effect until you unset them: \u003Ccode>STANDARD_AGENTS_API_KEY\u003C/code>, \u003Ccode>STANDARD_AGENTS_SESSION_COOKIE\u003C/code>.\u003C/p>\n\u003Cp>\u003Ca href=\"#logout\">\u003Ccode>logout\u003C/code>\u003C/a> removes the stored credentials and revokes the ones that the platform can revoke.\u003C/p>\n\u003Ch2 id=\"when-a-build-fails\">\u003Ca class=\"docs-anchor\" href=\"#when-a-build-fails\" aria-label=\"Link to this section\">\u003C/a>When a build fails\u003C/h2>\n\u003Cp>\u003Ccode>deploy\u003C/code> and \u003Ccode>builds status --wait\u003C/code> exit with code 1 when a build fails, and they print the error message from the platform.\u003C/p>\n\u003Col>\n\u003Cli>\n\u003Cp>Read the build log:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> logs\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Without a build ID, the command reads the newest build of the checked-out commit. To choose another build, list the builds with \u003Ccode>agents builds\u003C/code> and pass an ID.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>If the log shows an error in your project, correct it, commit, and deploy again:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> deploy\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003C/li>\n\u003Cli>\n\u003Cp>If the failure needs no change to your code, run the same build again and wait for its result:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> retry\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --wait\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003C/li>\n\u003Cli>\n\u003Cp>If production is broken after a build went live, make the earlier production build live again, then correct the code in a new commit:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> rollback\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --yes\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --wait\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003C/li>\n\u003C/ol>\n\u003Cp>\u003Ccode>deploy\u003C/code> and \u003Ccode>builds\u003C/code> use the project API key in \u003Ccode>.dev.vars\u003C/code>, or your account sign-in from \u003Ccode>agents login\u003C/code>. \u003Ccode>rollback\u003C/code> and \u003Ccode>redeploy\u003C/code> need the account sign-in, by an owner or admin of the account that owns the project. Without a stored sign-in or key, \u003Ccode>deploy\u003C/code> reports \u003Ccode>Only the push was verified\u003C/code>, and the other commands exit with code 3.\u003C/p>\n\u003Cp>Exit code 4 means that the platform stored your push and waits for the terms. Run \u003Ca href=\"#terms\">\u003Ccode>terms accept\u003C/code>\u003C/a>. An acceptance starts no build by itself: the command offers to start each deploy that waits, and \u003Ccode>agents builds retry\u003C/code> starts one later.\u003C/p>\n\u003Cp>The local \u003Ccode>build\u003C/code> script of a project stops with a message. Builds run on the platform from your committed \u003Ccode>package.json\u003C/code> and lockfile, so commit both.\u003C/p>\n\u003Ch2 id=\"project-commands\">\u003Ca class=\"docs-anchor\" href=\"#project-commands\" aria-label=\"Link to this section\">\u003C/a>Project commands\u003C/h2>\n\u003Ch3 id=\"init\">\u003Ca class=\"docs-anchor\" href=\"#init\" aria-label=\"Link to this section\">\u003C/a>init\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> init\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [project-name]\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Creates a project on the Standard Agents platform and sets it up on your machine. The command prints a sign-in URL and opens your browser. After you sign in and create the project there, it clones the project repository into the current directory, writes \u003Ccode>.dev.vars\u003C/code>, registers the Git credential helper for the repository, installs dependencies, and starts the dev server on \u003Ccode>127.0.0.1\u003C/code>. It stays attached to the dev server until you press Ctrl-C.\u003C/p>\n\u003Cp>Before the install, \u003Ccode>init\u003C/code> sets every Standard Agents Builder package in \u003Ccode>package.json\u003C/code> to the latest release and prints that version. These packages ship together, so a project names each of them at the same exact version, with no \u003Ccode>^\u003C/code> or \u003Ccode>~\u003C/code>. A lockfile that names an older release is updated by the install. \u003Ccode>@standardagents/sip\u003C/code> has its own version and is not changed. A prerelease CLI, run as \u003Ccode>@next\u003C/code> or \u003Ccode>@dev\u003C/code>, uses its own version instead of the latest release. If npm does not answer within 10 seconds, \u003Ccode>init\u003C/code> prints a warning and installs the versions already in \u003Ccode>package.json\u003C/code>. Commit the changed \u003Ccode>package.json\u003C/code> and lockfile.\u003C/p>\n\u003Cp>\u003Ccode>project-name\u003C/code> fills in the name field of the browser form.\u003C/p>\n\u003Cp>The command also accepts hidden compatibility and contributor options: \u003Ccode>--local\u003C/code> selects local scaffolding, \u003Ccode>--template &#x3C;template>\u003C/code> selects its Vite template (default: \u003Ccode>vanilla-ts\u003C/code>), and \u003Ccode>-y\u003C/code> / \u003Ccode>--yes\u003C/code> skips its prompts. \u003Ccode>--workspace\u003C/code> links local packages with pnpm. \u003Ccode>--bootstrap &#x3C;code>\u003C/code>, \u003Ccode>--bootstrap-stdin\u003C/code>, and \u003Ccode>--bootstrap-file &#x3C;path>\u003C/code> accept a platform setup code.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-open\u003C/code>\u003C/td>\n\u003Ctd>Print the sign-in URL without opening a browser\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-dev\u003C/code>\u003C/td>\n\u003Ctd>Clone and configure the project without starting the dev server\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--package-manager &#x3C;manager>\u003C/code>\u003C/td>\n\u003Ctd>Use \u003Ccode>npm\u003C/code>, \u003Ccode>pnpm\u003C/code>, \u003Ccode>yarn\u003C/code>, or \u003Ccode>bun\u003C/code> instead of the detected package manager\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--api-url &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address. See \u003Ca href=\"#platform-api-address\">Platform API address\u003C/a>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 1 when the dev server does not start or stops with an error. Your project stays cloned and configured, and the output ends with the commands that start the server again.\u003C/p>\n\u003Ch3 id=\"scaffold\">\u003Ca class=\"docs-anchor\" href=\"#scaffold\" aria-label=\"Link to this section\">\u003C/a>scaffold\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> scaffold\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Adds Standard Agents to the Vite project in the current directory. It adds \u003Ccode>@standardagents/builder\u003C/code> and \u003Ccode>@standardagents/spec\u003C/code> to \u003Ccode>package.json\u003C/code>, adds the \u003Ccode>builder()\u003C/code> plugin to your \u003Ccode>vite.config\u003C/code>, sets the registry for the \u003Ccode>@standardagents\u003C/code> scope, adds the generated type files to \u003Ccode>tsconfig.json\u003C/code>, and creates the \u003Ccode>agents/\u003C/code> directories with an \u003Ccode>AGENTS.md\u003C/code> guide in each one.\u003C/p>\n\u003Cp>\u003Ccode>scaffold\u003C/code> does not install dependencies, sign you in, or write \u003Ccode>.dev.vars\u003C/code>. The root \u003Ccode>AGENTS.md\u003C/code> that it writes lists those remaining steps. It keeps your application files. Without \u003Ccode>--force\u003C/code> it keeps an \u003Ccode>AGENTS.md\u003C/code> that already exists, and it says how many kept guides differ from the current version.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--force\u003C/code>\u003C/td>\n\u003Ctd>Reset the \u003Ccode>builder()\u003C/code> entry in \u003Ccode>vite.config\u003C/code> to a call with no options, and replace existing \u003Ccode>AGENTS.md\u003C/code> guides with the current versions. The command prints each replacement before it writes. It changes nothing else\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON result on the output stream, with a status for each stage. Progress lines go to the error stream\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command runs five stages: \u003Ccode>vite-config\u003C/code>, \u003Ccode>package-json\u003C/code>, \u003Ccode>registry-pin\u003C/code>, \u003Ccode>guides\u003C/code>, and \u003Ccode>tsconfig\u003C/code>. It exits with code 1 when a stage fails. It names that stage and the command that resumes it, completes the other stages, and keeps the files that it wrote.\u003C/p>\n\u003Ch3 id=\"support-files\">\u003Ca class=\"docs-anchor\" href=\"#support-files\" aria-label=\"Link to this section\">\u003C/a>support-files\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> support-files\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Writes the local support files of a project repository that you cloned yourself. \u003Ccode>init\u003C/code> runs the same step for you. The command writes a \u003Ccode>package.json\u003C/code> when the repository has none, adds local build and development directories to \u003Ccode>.gitignore\u003C/code>, and sets the registry for the \u003Ccode>@standardagents\u003C/code> scope. It keeps files that already exist.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--project-name &#x3C;name>\u003C/code>\u003C/td>\n\u003Ctd>Project name for a \u003Ccode>package.json\u003C/code> that the command creates\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--package-manager &#x3C;manager>\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>npm\u003C/code>, \u003Ccode>pnpm\u003C/code>, \u003Ccode>yarn\u003C/code>, or \u003Ccode>bun\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON result on the output stream, with a status for the \u003Ccode>support-files\u003C/code> and \u003Ccode>registry-pin\u003C/code> stages\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 1 when it cannot set the registry, after it prints the setting to add by hand.\u003C/p>\n\u003Ch3 id=\"init-chat\">\u003Ca class=\"docs-anchor\" href=\"#init-chat\" aria-label=\"Link to this section\">\u003C/a>init-chat\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> init-chat\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [project-name]\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Creates a React chat application in a new \u003Ccode>project-name\u003C/code> directory. The application connects to a running Standard Agents instance. In a terminal, the command asks for the framework, the address of the instance, and the package manager. It then installs dependencies, starts the dev server of the chat application, opens the browser, and stays attached to the server.\u003C/p>\n\u003Cp>Without a terminal, the command never asks. It needs \u003Ccode>project-name\u003C/code>, and either \u003Ccode>--yes\u003C/code> or a flag for each of the three values. It installs dependencies, prints the command that starts the dev server, and exits. It starts the server only when you pass \u003Ccode>--dev\u003C/code>.\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> init-chat\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> my-chat\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --yes\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> init-chat\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> my-chat\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --framework\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> nextjs\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --instance-url\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> http://localhost:5173\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --package-manager\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> pnpm\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>-y\u003C/code>, \u003Ccode>--yes\u003C/code>\u003C/td>\n\u003Ctd>Ask nothing. Use Vite, \u003Ccode>http://localhost:5173\u003C/code>, and the detected package manager for each value that has no flag. Needs \u003Ccode>project-name\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--framework &#x3C;framework>\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>vite\u003C/code> or \u003Ccode>nextjs\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--instance-url &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Address of the Standard Agents instance that the chat connects to. It must be an \u003Ccode>http\u003C/code> or \u003Ccode>https\u003C/code> URL\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--package-manager &#x3C;manager>\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>npm\u003C/code>, \u003Ccode>pnpm\u003C/code>, \u003Ccode>yarn\u003C/code>, or \u003Ccode>bun\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-install\u003C/code>\u003C/td>\n\u003Ctd>Write the project, and do not install dependencies or start the dev server\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--dev\u003C/code>\u003C/td>\n\u003Ctd>Start the dev server and stay attached to it. This is the default in a terminal. It cannot be combined with \u003Ccode>--no-install\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-dev\u003C/code>\u003C/td>\n\u003Ctd>Do not start the dev server. This is the default without a terminal\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-open\u003C/code>\u003C/td>\n\u003Ctd>Do not open the browser when the dev server starts\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 1, before it creates anything, when a value is missing or not supported, or when the directory already exists. It also exits with code 1 when the installation fails. When the dev server exits with an error, the command exits with the same code.\u003C/p>\n\u003Ch2 id=\"account-commands\">\u003Ca class=\"docs-anchor\" href=\"#account-commands\" aria-label=\"Link to this section\">\u003C/a>Account commands\u003C/h2>\n\u003Ch3 id=\"login\">\u003Ca class=\"docs-anchor\" href=\"#login\" aria-label=\"Link to this section\">\u003C/a>login\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> login\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> login\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --bootstrap-stdin\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Signs you in to your Standard Agents account. It is the one sign-in command, and it works in any directory. It never creates a project.\u003C/p>\n\u003Cp>The command prints the sign-in URL, opens your browser, and waits until you approve the sign-in. Ctrl-C cancels the sign-in on the platform too. The command then does these things:\u003C/p>\n\u003Col>\n\u003Cli>It saves one sign-in for this machine: an account session and a long-lived account API key. \u003Ccode>terms\u003C/code>, \u003Ccode>builds\u003C/code>, \u003Ccode>deploy\u003C/code>, \u003Ccode>rollback\u003C/code>, \u003Ccode>redeploy\u003C/code>, and Git all use it, in every directory.\u003C/li>\n\u003Cli>It registers the credential helper in your global Git configuration for \u003Ccode>git.standardagents.ai\u003C/code> and \u003Ccode>git.standardagentbuilder.com\u003C/code> only.\u003C/li>\n\u003Cli>Inside a project that has no project API key, it saves that key in \u003Ccode>.dev.vars\u003C/code>. The local instance needs the key before you can sign in to it with your account. An existing key is kept.\u003C/li>\n\u003C/ol>\n\u003Cp>The command finds the project from the Git remote of your checkout, or from a setup code that names the project. The setup code comes from the project's Overview page in the dashboard. When the command cannot get a project API key, it says why, and the sign-in for the machine is still saved.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--bootstrap-stdin\u003C/code>\u003C/td>\n\u003Ctd>Sign in with a setup code from the project's Overview page, read from the standard input. Needs no browser\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--bootstrap-file &#x3C;path>\u003C/code>\u003C/td>\n\u003Ctd>Read the setup code from a file\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--bootstrap &#x3C;code>\u003C/code>\u003C/td>\n\u003Ctd>The setup code as an argument. Other users of the machine can read an argument in the process list, so prefer the two flags above\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address. The default is \u003Ccode>https://api.standardagents.ai\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-open\u003C/code>\u003C/td>\n\u003Ctd>Print the sign-in URL without opening a browser. Required without a terminal when you pass no code\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-config\u003C/code>\u003C/td>\n\u003Ctd>Save the sign-in and leave the global Git configuration unchanged\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--helper-command &#x3C;command>\u003C/code>\u003C/td>\n\u003Ctd>The credential helper command to register in the global Git configuration, in place of the default\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Pass the setup code one way. The command exits with code 1 when it receives two, or when the file or the standard input holds no code.\u003C/p>\n\u003Cp>When the project still has a published default admin password and the command cannot save a project API key, the command replaces the password with a random one. It saves the new password as \u003Ccode>SUPER_ADMIN_PASSWORD\u003C/code> in \u003Ccode>.dev.vars\u003C/code> and does not print it.\u003C/p>\n\u003Cp>The registered helper command names the CLI release that ran \u003Ccode>login\u003C/code>: \u003Ccode>npx -y @standardagents/cli@&#x3C;version> git-credential\u003C/code>. Git therefore never starts a release that you did not run yourself. Run \u003Ccode>login\u003C/code> again after you update the CLI to register the new release. \u003Ccode>init\u003C/code> registers the helper of its own release in the cloned repository in the same way.\u003C/p>\n\u003Cp>The command sets \u003Ccode>useHttpPath\u003C/code> for the two Standard Agents hosts, because one host serves many repositories. Releases through 0.45.5 set \u003Ccode>credential.useHttpPath\u003C/code> for every Git host. The command removes that global value when your global Git configuration has no other credential setting. Otherwise it leaves the value and prints the command that removes it.\u003C/p>\n\u003Cp>The sign-in includes an account API key that does not expire, so Git and the build commands keep working after the browser session ends. When you run \u003Ccode>login\u003C/code> again as the same user of the same account, the command keeps that key. When the saved key belongs to another user, account, or platform, the command revokes it before it creates a new one. The number of active keys for the machine therefore stays at one. A key that could not be revoked is named in a warning.\u003C/p>\n\u003Cp>\u003Ccode>agents git-login\u003C/code> is an earlier name of this command. It accepts the same flags and does the same work.\u003C/p>\n\u003Ch3 id=\"whoami\">\u003Ca class=\"docs-anchor\" href=\"#whoami\" aria-label=\"Link to this section\">\u003C/a>whoami\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> whoami\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> whoami\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --json\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Prints the user, the account, and the platform address of the sign-in that \u003Ccode>login\u003C/code> saved on this machine. The command reads the saved sign-in and sends no request, so it works offline. It never prints the session or the key.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON document: \u003Ccode>ok\u003C/code>, \u003Ccode>endpoint\u003C/code>, \u003Ccode>account\u003C/code>, \u003Ccode>user\u003C/code>, \u003Ccode>credential\u003C/code> (\u003Ccode>api_key\u003C/code>, \u003Ccode>session\u003C/code>, or \u003Ccode>unreadable\u003C/code>), and \u003Ccode>signed_in_at\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 0 when a sign-in is saved. When the Keychain does not return the saved session and key (for example in an SSH session), the command still prints the account, reports the credential as \u003Ccode>unreadable\u003C/code>, and names \u003Ccode>security unlock-keychain\u003C/code>. It exits with code 3 when there is none, and names the \u003Ccode>login\u003C/code> command. With \u003Ccode>--json\u003C/code> that result is \u003Ccode>{ \"ok\": false, \"error\": { \"code\": \"NOT_SIGNED_IN\", \"message\", \"fix\" } }\u003C/code>.\u003C/p>\n\u003Ch3 id=\"logout\">\u003Ca class=\"docs-anchor\" href=\"#logout\" aria-label=\"Link to this section\">\u003C/a>logout\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> logout\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Removes every stored credential: your sign-in for this machine and \u003Ccode>STANDARD_AGENTS_API_KEY\u003C/code> in the nearest \u003Ccode>.dev.vars\u003C/code>. It also removes a project session that a release through 0.45.5 saved. It then revokes the project API key, the account API key of this machine, and the account session on the platform, which also signs you out of the dashboard. The output lists what the command removed, what it revoked, and what still works.\u003C/p>\n\u003Cp>Each API key revokes itself, so the command needs no session for it. A platform that has no route for this reports the project API key as still valid; the key is gone from this machine, and you revoke it under API keys in the dashboard. Credentials in environment variables stay until you unset them.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--org &#x3C;org-id-or-slug>\u003C/code>\u003C/td>\n\u003Ctd>Limit the removal of organization sessions that early releases saved to one organization\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address for a project session from an earlier release whose \u003Ccode>.dev.vars\u003C/code> names none\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print only the result as JSON on the output stream: \u003Ccode>ok\u003C/code>, \u003Ccode>removed\u003C/code>, \u003Ccode>revoked\u003C/code>, and \u003Ccode>remaining\u003C/code>. \u003Ccode>ok\u003C/code> is \u003Ccode>false\u003C/code> when the exit code is 1\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 1 when a credential on this machine still works or a revocation failed. The local credentials are removed in both cases.\u003C/p>\n\u003Ch3 id=\"git-credential\">\u003Ca class=\"docs-anchor\" href=\"#git-credential\" aria-label=\"Link to this section\">\u003C/a>git-credential\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> git-credential\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> &#x3C;\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">operatio\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">n\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>The credential helper that \u003Ccode>init\u003C/code> and \u003Ccode>login\u003C/code> register. Git runs it; you do not need to. It follows the Git credential helper protocol: Git writes the request to the standard input, and the helper prints a user name and a short-lived password.\u003C/p>\n\u003Cp>The helper answers the \u003Ccode>get\u003C/code> operation for HTTPS requests to \u003Ccode>git.standardagents.ai\u003C/code> and \u003Ccode>git.standardagentbuilder.com\u003C/code>. It prints nothing for other hosts and other operations, so your other credential helpers keep working. When it has no credential for a Standard Agents host, it prints the \u003Ccode>login\u003C/code> command on the error stream.\u003C/p>\n\u003Cp>The helper requests a token that can only read for \u003Ccode>git clone\u003C/code>, \u003Ccode>git fetch\u003C/code>, \u003Ccode>git pull\u003C/code>, and \u003Ccode>git ls-remote\u003C/code>, and a token that can also write for every other command. Git does not tell a credential helper which command runs, so the helper reads it from the \u003Ccode>git\u003C/code> process that started it. When it cannot, it requests a write token, as earlier releases did for every command. \u003Ccode>STANDARD_AGENTS_GIT_TOKEN_SCOPE=write\u003C/code> (or \u003Ccode>read\u003C/code>) sets the scope yourself.\u003C/p>\n\u003Cp>The helper reads \u003Ccode>.dev.vars\u003C/code> as the local runtime reads it, so quoted values, \u003Ccode>export\u003C/code> lines, and comments are understood.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"deployment-commands\">\u003Ca class=\"docs-anchor\" href=\"#deployment-commands\" aria-label=\"Link to this section\">\u003C/a>Deployment commands\u003C/h2>\n\u003Ch3 id=\"deploy\">\u003Ca class=\"docs-anchor\" href=\"#deploy\" aria-label=\"Link to this section\">\u003C/a>deploy\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> deploy\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Pushes the checked-out commit to the branch of the same name on the \u003Ccode>origin\u003C/code> remote, then follows the platform build of that commit and reports the result. The command does not use \u003Ccode>push.default\u003C/code> or the upstream setting of the branch. It exits with code 2 when the remote is not a Standard Agents repository, or when no branch is checked out and you pass no \u003Ccode>--branch\u003C/code>.\u003C/p>\n\u003Cp>A push to the default branch deploys to production. A push to another branch deploys a preview.\u003C/p>\n\u003Cp>When the remote branch already has the commit, the command pushes nothing and reads the existing build of that commit.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-wait\u003C/code>\u003C/td>\n\u003Ctd>Push and return without following the build\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--timeout &#x3C;seconds>\u003C/code>\u003C/td>\n\u003Ctd>How long to follow the build. The default is 900\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--remote &#x3C;name>\u003C/code>\u003C/td>\n\u003Ctd>Git remote to push to. The default is \u003Ccode>origin\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--branch &#x3C;name>\u003C/code>\u003C/td>\n\u003Ctd>Remote branch to push to. The default is the checked-out branch\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON document on the output stream. Every other line goes to the error stream\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--project &#x3C;id>\u003C/code>\u003C/td>\n\u003Ctd>Project ID, when the project cannot be found from the pushed remote\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address. The default is the address of the project, then \u003Ccode>https://api.standardagents.ai\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Exit code\u003C/th>\n\u003Cth>Result\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>0\u003C/code>\u003C/td>\n\u003Ctd>The build is live\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>0\u003C/code>\u003C/td>\n\u003Ctd>The output says \u003Ccode>Only the push was verified\u003C/code>: the command could not read the build. Sign in with \u003Ccode>agents login\u003C/code>, then run \u003Ccode>agents builds status\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>0\u003C/code>\u003C/td>\n\u003Ctd>With \u003Ccode>--no-wait\u003C/code>: the push was accepted and the build was not followed\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>1\u003C/code>\u003C/td>\n\u003Ctd>The push failed, the build failed or was cancelled, or no build started\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>1\u003C/code>\u003C/td>\n\u003Ctd>The push printed lines that start with \u003Ccode>remote: Standard Agents:\u003C/code>, for a reason other than the terms. The platform stored the push and started no build\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>2\u003C/code>\u003C/td>\n\u003Ctd>The remote, the branch, or \u003Ccode>--timeout\u003C/code> is not usable\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>4\u003C/code>\u003C/td>\n\u003Ctd>The platform stored the push and needs the terms accepted before it builds. Run \u003Ca href=\"#terms\">\u003Ccode>terms accept\u003C/code>\u003C/a>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>5\u003C/code>\u003C/td>\n\u003Ctd>The wait reached the timeout while the build was still in progress\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"builds\">\u003Ca class=\"docs-anchor\" href=\"#builds\" aria-label=\"Link to this section\">\u003C/a>builds\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\">                    # recent builds, newest first\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> status\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [build]     \u003C/span>\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># one build and its error message\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> logs\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [build]       \u003C/span>\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># the log of one build\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> builds\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> retry\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [build]      \u003C/span>\u003Cspan style=\"--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit\"># run a failed build again without a new commit\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>\u003Ccode>[build]\u003C/code> is a build ID or a unique prefix of a build ID. A commit prefix selects its newest build when all matches belong to one commit. Without it, \u003Ccode>status\u003C/code> and \u003Ccode>logs\u003C/code> use the newest build of the checked-out commit, or the newest build when that commit has none. \u003Ccode>retry\u003C/code> uses the newest build of the checked-out branch, when that build failed.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Command\u003C/th>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>builds\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--limit &#x3C;n>\u003C/code>\u003C/td>\n\u003Ctd>How many builds to list. The default is 10\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>builds status\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--commit &#x3C;sha>\u003C/code>\u003C/td>\n\u003Ctd>Show the newest build of this commit\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>builds status\u003C/code>, \u003Ccode>builds retry\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--wait\u003C/code>\u003C/td>\n\u003Ctd>Wait for the build to finish. Exit with code 0 only when it was deployed\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>builds status\u003C/code>, \u003Ccode>builds retry\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--timeout &#x3C;seconds>\u003C/code>\u003C/td>\n\u003Ctd>How long \u003Ccode>--wait\u003C/code> waits. The default is 900\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>builds logs\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--follow\u003C/code>\u003C/td>\n\u003Ctd>Stream the log of a build that is still running\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>All four\u003C/td>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON document on the output stream\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>All four\u003C/td>\n\u003Ctd>\u003Ccode>--project &#x3C;id>\u003C/code>\u003C/td>\n\u003Ctd>Project ID, when the project cannot be found from the \u003Ccode>origin\u003C/code> remote\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>All four\u003C/td>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>These commands use the project API key in \u003Ccode>.dev.vars\u003C/code>, or your account sign-in. They exit with the \u003Ca href=\"#exit-codes\">shared codes\u003C/a>.\u003C/p>\n\u003Ch3 id=\"rollback\">\u003Ca class=\"docs-anchor\" href=\"#rollback\" aria-label=\"Link to this section\">\u003C/a>rollback\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> rollback\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [build]\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Makes an earlier production build live again. Without \u003Ccode>[build]\u003C/code>, the target is the production build that was live before the current one. The command accepts only a production build that was live earlier.\u003C/p>\n\u003Cp>The command asks for confirmation in a terminal. Without a terminal it changes nothing and exits with code 2 unless you pass \u003Ccode>--yes\u003C/code>. It needs an account sign-in from \u003Ccode>agents login\u003C/code>; a project API key is not enough.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--yes\u003C/code>\u003C/td>\n\u003Ctd>Do not ask for confirmation\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--wait\u003C/code>\u003C/td>\n\u003Ctd>Wait for the build to finish. Exit with code 0 only when it was deployed\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--timeout &#x3C;seconds>\u003C/code>\u003C/td>\n\u003Ctd>How long \u003Ccode>--wait\u003C/code> waits. The default is 900\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON document on the output stream\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--project &#x3C;id>\u003C/code>\u003C/td>\n\u003Ctd>Project ID, when the project cannot be found from the \u003Ccode>origin\u003C/code> remote\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"redeploy\">\u003Ca class=\"docs-anchor\" href=\"#redeploy\" aria-label=\"Link to this section\">\u003C/a>redeploy\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> redeploy\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Deploys the live production build again, so that changed environment values take effect. No build runs. The command needs an account sign-in from \u003Ccode>agents login\u003C/code>.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON document on the output stream\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--project &#x3C;id>\u003C/code>\u003C/td>\n\u003Ctd>Project ID, when the project cannot be found from the \u003Ccode>origin\u003C/code> remote\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"model-commands\">\u003Ca class=\"docs-anchor\" href=\"#model-commands\" aria-label=\"Link to this section\">\u003C/a>Model commands\u003C/h2>\n\u003Ch3 id=\"current-models\">\u003Ca class=\"docs-anchor\" href=\"#current-models\" aria-label=\"Link to this section\">\u003C/a>current-models\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> current-models\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Prints the current model guide as Markdown. The command requests \u003Ccode>https://standardagentspec.org/models.md\u003C/code> first, and \u003Ccode>https://standardagentspec.com/models.md\u003C/code> when the first request fails. It needs no project and no sign-in.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--url &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Request this address instead\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 1 when no address returns the guide. An address that does not answer within 15 seconds counts as failed.\u003C/p>\n\u003Ch3 id=\"available-models\">\u003Ca class=\"docs-anchor\" href=\"#available-models\" aria-label=\"Link to this section\">\u003C/a>available-models\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> available-models\u003C/span>\u003Cspan style=\"--shiki-light:#986801;--shiki-dark:#79B8FF\"> --provider=openai\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Lists the model IDs of one provider as a Markdown table. Run it from a project with its dependencies installed. The command uses the provider's own key when the project has one. Otherwise it uses the account key of the project, \u003Ccode>STANDARD_AGENTS_API_KEY\u003C/code>.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--provider &#x3C;provider>\u003C/code>\u003C/td>\n\u003Ctd>An installed provider package such as \u003Ccode>openai\u003C/code>, or a provider defined in \u003Ccode>agents/providers/\u003C/code>. Required when more than one provider is usable\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print the provider and its models as one JSON document. The document never contains a key. See \u003Ca href=\"#json-output\">JSON output\u003C/a>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>The command exits with code 1 when a key is missing, the request fails, or the provider returns no models. It also exits with code 1, before any request, when the account key would go to a platform address that is neither HTTPS nor on this machine.\u003C/p>\n\u003Ch2 id=\"coding-agent-commands\">\u003Ca class=\"docs-anchor\" href=\"#coding-agent-commands\" aria-label=\"Link to this section\">\u003C/a>Coding agent commands\u003C/h2>\n\u003Ch3 id=\"skill\">\u003Ca class=\"docs-anchor\" href=\"#skill\" aria-label=\"Link to this section\">\u003C/a>skill\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> skill\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Installs the \u003Ccode>agentbuilder\u003C/code> skill for your coding agent. In a terminal, the command asks which target to install. See \u003Ca href=\"/docs/user-interfaces/skill\">@standardagents/skill\u003C/a> for what the skill covers.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--agent &#x3C;target>\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>agents\u003C/code> installs into \u003Ccode>~/.agents/skills\u003C/code>, which Codex, Cursor, Gemini CLI, GitHub Copilot, and OpenCode read. \u003Ccode>claude\u003C/code> installs into \u003Ccode>~/.claude/skills\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--dir &#x3C;path>\u003C/code>\u003C/td>\n\u003Ctd>Install into this directory instead\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--force\u003C/code>\u003C/td>\n\u003Ctd>Replace an installed copy\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>\u003Ccode>--agent codex\u003C/code> is an alias of \u003Ccode>--agent agents\u003C/code>. The command exits with code 1 when the skill is already installed without \u003Ccode>--force\u003C/code>.\u003C/p>\n\u003Ch2 id=\"packing-commands\">\u003Ca class=\"docs-anchor\" href=\"#packing-commands\" aria-label=\"Link to this section\">\u003C/a>Packing commands\u003C/h2>\n\u003Cp>Run these commands from the root of a project with its dependencies installed. They use the Standard Agents Builder that the project installs. Without it, each command prints the install command and exits with code 1.\u003C/p>\n\u003Ch3 id=\"pack\">\u003Ca class=\"docs-anchor\" href=\"#pack\" aria-label=\"Link to this section\">\u003C/a>pack\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> pack\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [agent-name]\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Packs an agent and everything it depends on into a package in \u003Ccode>agents/packed/\u003C/code>. The command then removes the original files that only that agent uses, and it lists those files before it removes them. It keeps files that another agent also uses.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--output &#x3C;dir>\u003C/code>\u003C/td>\n\u003Ctd>Output directory. The default is \u003Ccode>agents/packed\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--npm\u003C/code>\u003C/td>\n\u003Ctd>Write a package structure that npm can publish\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--version &#x3C;version>\u003C/code>\u003C/td>\n\u003Ctd>Package version. The default is \u003Ccode>1.0.0\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-remove\u003C/code>\u003C/td>\n\u003Ctd>Keep every original file\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--no-interactive\u003C/code>\u003C/td>\n\u003Ctd>Never prompt. \u003Ccode>agent-name\u003C/code> is then required when the project has more than one agent\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"unpack\">\u003Ca class=\"docs-anchor\" href=\"#unpack\" aria-label=\"Link to this section\">\u003C/a>unpack\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> unpack\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [package]\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Copies a packed agent into editable files under \u003Ccode>agents/\u003C/code>. Without \u003Ccode>package\u003C/code>, the command lists the packages that it found and exits with code 0. It has no flags.\u003C/p>\n\u003Ch3 id=\"list-packed\">\u003Ca class=\"docs-anchor\" href=\"#list-packed\" aria-label=\"Link to this section\">\u003C/a>list-packed\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> list-packed\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Lists the packed agents in \u003Ccode>agents/packed/\u003C/code> and in the installed packages of the project, with their version, source, and entry agent.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print the packages as one JSON document. See \u003Ca href=\"#json-output\">JSON output\u003C/a>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"diagnostic-commands\">\u003Ca class=\"docs-anchor\" href=\"#diagnostic-commands\" aria-label=\"Link to this section\">\u003C/a>Diagnostic commands\u003C/h2>\n\u003Ch3 id=\"diag\">\u003Ca class=\"docs-anchor\" href=\"#diag\" aria-label=\"Link to this section\">\u003C/a>diag\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> diag\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> instance\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> diag\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> threads\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> diag\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> thread\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> &#x3C;\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">i\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">d\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> diag\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> logs\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> &#x3C;\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">threa\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">d\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">>\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\"> [logId]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> diag\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> tail\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> &#x3C;\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">threa\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">d\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> diag\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> revive\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\"> &#x3C;\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\">threa\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#E1E4E8\">d\u003C/span>\u003Cspan style=\"--shiki-light:#383A42;--shiki-dark:#F97583\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Diagnoses a running instance: a local dev server or a deployed project. These commands read the request logs of an instance. Build logs are in \u003Ca href=\"#builds\">\u003Ccode>builds\u003C/code>\u003C/a>.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Command\u003C/th>\n\u003Cth>Purpose\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag instance\u003C/code>\u003C/td>\n\u003Ctd>The Builder version of the instance, its watchdog settings, and configuration warnings\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag threads\u003C/code>\u003C/td>\n\u003Ctd>Recent threads and the state of their execution\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag thread &#x3C;id>\u003C/code>\u003C/td>\n\u003Ctd>One thread: execution state, open requests, alarms, and watchdog history\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag logs &#x3C;thread> [logId]\u003C/code>\u003C/td>\n\u003Ctd>The recent request logs of a thread, or one log in detail\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag tail &#x3C;thread>\u003C/code>\u003C/td>\n\u003Ctd>Stream the logs of a thread until you press Ctrl-C\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag revive &#x3C;thread>\u003C/code>\u003C/td>\n\u003Ctd>Run a watchdog check now. It closes lost requests and resumes a thread that is stuck. This command changes the thread\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>\u003Ccode>&#x3C;id>\u003C/code> and \u003Ccode>&#x3C;thread>\u003C/code> accept the start of a thread ID.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Command\u003C/th>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>All six\u003C/td>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Address of the instance. The default is \u003Ccode>STANDARD_AGENTS_INSTANCE_URL\u003C/code>, then \u003Ccode>http://localhost:5173\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>All six\u003C/td>\n\u003Ctd>\u003Ccode>--token &#x3C;token>\u003C/code>\u003C/td>\n\u003Ctd>API key or session token of the instance. Set \u003Ccode>STANDARD_AGENTS_INSTANCE_TOKEN\u003C/code> in place of this flag: other users of the machine can read an argument in the process list. A deployed instance needs a key with the \u003Ccode>logs\u003C/code> permission\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>All six\u003C/td>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print JSON on stdout only: one document, or for \u003Ccode>diag tail\u003C/code> one frame per line. See \u003Ca href=\"#json-output\">JSON output\u003C/a>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag threads\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--stuck\u003C/code>\u003C/td>\n\u003Ctd>Show only threads with an open request that was not recovered. The command exits with code 1 when it could not read a thread, because that thread could be the stuck one\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag threads\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--limit &#x3C;n>\u003C/code>\u003C/td>\n\u003Ctd>How many recent threads to read, from 1 to 100. The default is 25\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>diag logs\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>--limit &#x3C;n>\u003C/code>\u003C/td>\n\u003Ctd>How many logs to list, from 1 to 100. The default is 10\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Each command prints one line that starts with \u003Ccode>diag:\u003C/code> on stderr and exits with code 1 when the instance cannot be reached, does not answer within 30 seconds, or refuses the request. A \u003Ccode>--token\u003C/code> is sent only to an HTTPS instance address, or to plain HTTP on this machine; any other address exits with code 1 before a request. A request with a token is not redirected. \u003Ccode>diag tail\u003C/code> exits with code 0 when the stream closes normally, and with code 1 when the connection fails or closes abnormally.\u003C/p>\n\u003Ch2 id=\"terms-commands\">\u003Ca class=\"docs-anchor\" href=\"#terms-commands\" aria-label=\"Link to this section\">\u003C/a>Terms commands\u003C/h2>\n\u003Ch3 id=\"terms\">\u003Ca class=\"docs-anchor\" href=\"#terms\" aria-label=\"Link to this section\">\u003C/a>terms\u003C/h3>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> terms\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">agents\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> terms\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> accept\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>\u003Ccode>terms\u003C/code> shows the Terms of Service and the Privacy Policy that are in force: each title, version, and URL, and whether you accepted that version. \u003Ccode>terms status\u003C/code> does the same.\u003C/p>\n\u003Cp>\u003Ccode>terms accept\u003C/code> shows the same documents and the acknowledgement sentence, then asks for your confirmation. An acceptance starts no build. The command lists each deploy that waits and asks whether to start it; with \u003Ccode>--agree\u003C/code> it starts them without a second question. To start one later, run \u003Ccode>agents builds retry\u003C/code> in its project on the branch that you pushed.\u003C/p>\n\u003Cp>Both commands use the sign-in that \u003Ccode>login\u003C/code> saved on this machine, so they work in any directory. An API key cannot accept terms, because acceptance belongs to a person.\u003C/p>\n\u003Cp>Without a terminal, \u003Ccode>terms accept\u003C/code> records nothing and exits with code 2. It prints the two links, the acknowledgement sentence, and the command that accepts those versions. A coding agent shows you the links and the sentence, and runs that command only after you say yes. When a document changed after you reviewed it, the command records nothing, exits with code 2, and prints the current documents.\u003C/p>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C/th>\n\u003Cth>Effect\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--json\u003C/code>\u003C/td>\n\u003Ctd>Print one JSON object and never prompt. \u003Ccode>terms accept --json\u003C/code> still needs \u003Ccode>--agree\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--endpoint &#x3C;url>\u003C/code>\u003C/td>\n\u003Ctd>Platform API address. The default is the address of your saved sign-in\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--agree\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>terms accept\u003C/code> only: accept without a prompt. It needs both version flags\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--terms-version &#x3C;version>\u003C/code>\u003C/td>\n\u003Ctd>With \u003Ccode>--agree\u003C/code>: the Terms of Service version that you reviewed\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>--privacy-version &#x3C;version>\u003C/code>\u003C/td>\n\u003Ctd>With \u003Ccode>--agree\u003C/code>: the Privacy Policy version that you reviewed\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cdiv class=\"docs-table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Exit code\u003C/th>\n\u003Cth>Result\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>0\u003C/code>\u003C/td>\n\u003Ctd>Success, including when you already accepted the current documents or there are none to accept\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>1\u003C/code>\u003C/td>\n\u003Ctd>The command failed\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>2\u003C/code>\u003C/td>\n\u003Ctd>A confirmation is needed. Nothing was recorded\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>3\u003C/code>\u003C/td>\n\u003Ctd>You are not signed in\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"generate-types\">\u003Ca class=\"docs-anchor\" href=\"#generate-types\" aria-label=\"Link to this section\">\u003C/a>Generate types\u003C/h2>\n\u003Cp>The dev server generates the type files of a project. It writes \u003Ccode>.agents/types.d.ts\u003C/code> and \u003Ccode>.agents/virtual-module.d.ts\u003C/code> when it starts, and again after each change under \u003Ccode>agents/\u003C/code>:\u003C/p>\n\u003Cfigure class=\"docs-code\" data-docs=\"code\" data-lang=\"bash\">\u003Cpre class=\"shiki shiki-themes one-light github-dark\" style=\"--shiki-light:#383A42;--shiki-dark:#e1e4e8;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#4078F2;--shiki-dark:#B392F0\">npm\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> run\u003C/span>\u003Cspan style=\"--shiki-light:#50A14F;--shiki-dark:#9ECBFF\"> dev\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\u003C/figure>\n\u003Cp>Start the dev server once before you run the type checker in a new project. The type checker reports missing type files until then. There is no separate type-generation command.\u003C/p>",[9,13,17,20,23,26,29,32,35,38,41,44,46,48,50,52,55,57,59,61,63,66,68,70,72,74,77,79,81,84,86,89,91,93,95,98,100,103,105],{"id":10,"text":11,"depth":12},"full-screen-app","Full-screen app",2,{"id":14,"text":15,"depth":16},"line-mode","Line mode",3,{"id":18,"text":19,"depth":12},"commands","Commands",{"id":21,"text":22,"depth":12},"exit-codes","Exit codes",{"id":24,"text":25,"depth":16},"json-output","JSON output",{"id":27,"text":28,"depth":12},"run-without-a-terminal","Run without a terminal",{"id":30,"text":31,"depth":12},"platform-api-address","Platform API address",{"id":33,"text":34,"depth":12},"request-time-limits","Request time limits",{"id":36,"text":37,"depth":12},"where-credentials-are-stored","Where credentials are stored",{"id":39,"text":40,"depth":12},"when-a-build-fails","When a build fails",{"id":42,"text":43,"depth":12},"project-commands","Project commands",{"id":45,"text":45,"depth":16},"init",{"id":47,"text":47,"depth":16},"scaffold",{"id":49,"text":49,"depth":16},"support-files",{"id":51,"text":51,"depth":16},"init-chat",{"id":53,"text":54,"depth":12},"account-commands","Account commands",{"id":56,"text":56,"depth":16},"login",{"id":58,"text":58,"depth":16},"whoami",{"id":60,"text":60,"depth":16},"logout",{"id":62,"text":62,"depth":16},"git-credential",{"id":64,"text":65,"depth":12},"deployment-commands","Deployment commands",{"id":67,"text":67,"depth":16},"deploy",{"id":69,"text":69,"depth":16},"builds",{"id":71,"text":71,"depth":16},"rollback",{"id":73,"text":73,"depth":16},"redeploy",{"id":75,"text":76,"depth":12},"model-commands","Model commands",{"id":78,"text":78,"depth":16},"current-models",{"id":80,"text":80,"depth":16},"available-models",{"id":82,"text":83,"depth":12},"coding-agent-commands","Coding agent commands",{"id":85,"text":85,"depth":16},"skill",{"id":87,"text":88,"depth":12},"packing-commands","Packing commands",{"id":90,"text":90,"depth":16},"pack",{"id":92,"text":92,"depth":16},"unpack",{"id":94,"text":94,"depth":16},"list-packed",{"id":96,"text":97,"depth":12},"diagnostic-commands","Diagnostic commands",{"id":99,"text":99,"depth":16},"diag",{"id":101,"text":102,"depth":12},"terms-commands","Terms commands",{"id":104,"text":104,"depth":16},"terms",{"id":106,"text":107,"depth":12},"generate-types","Generate types","user-interfaces/cli","docs","User Interfaces",{"path":112,"title":113,"navTitle":113},"core-concepts/utilities","Utilities",{"path":115,"title":116,"navTitle":116},"user-interfaces/skill","@standardagents/skill","/docs/user-interfaces/cli.md","https://github.com/standardagents/agentbuilder/blob/main/docs/user-interfaces/cli.mdx",1794580510129]