From 562e7f38d01882912718d7c00a6603f426d92fa9 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Thu, 6 Aug 2026 11:57:09 -0600 Subject: [PATCH 01/14] docs: consolidate the Warp Agent CLI docs into the Agents section The Warp Agent CLI had its own top-level docs tab at /cli, which framed it as a separate product area rather than another entry point to the Warp Agent. Nothing outside src/content/docs/cli/ linked into it, so the section was effectively orphaned from the rest of the docs. Move the nine CLI pages to src/content/docs/agents/cli/ and surface them as a "Warp Agent CLI" group inside the Agents tab, between "Warp Agents" and "Third-Party CLI Agents". - Move content and assets with git mv so history follows; rewrite 68 absolute self-links and both relative image paths. - Remove the standalone Agent CLI sidebar topic and add the new group, preserving the original ordering and labels. - Add nine 308 redirects so every /cli/* URL still resolves. - Repoint the llms.txt custom set at agents/cli/**. - Reference the CLI as an entry point from agents/index, agents-in-warp, local-agents/overview, and cli-agents/overview, which previously had no path to it. The path /agents/cli/ is deliberately generic: the Oz CLI is retired and wrapped into the Warp Agent CLI at the next launch (~2026-08-18), so the Oz CLI reference is expected to fold in here later. Recorded that decision in the terminology glossary and the vars.ts comment that previously flagged the WARP_AGENT_CLI / WARP_CLI collision as unresolved. Neither var changes in this commit. Also cropped the two CLI screenshots to their subject (the tab-bar capture included a cut-off prompt below the bar) and included a cut-off prompt below the bar) and included a cut-off proBy: Warp Agent --- .agents/references/terminology.md | 4 +- astro.config.mjs | 2 +- src/assets/agents/cli/tui-agents-tab-bar.png | Bin 0 -> 12771 bytes src/assets/agents/cli/tui-statusline.png | Bin 0 -> 36096 bytes src/assets/cli/tui-agents-tab-bar.png | Bin 58667 -> 0 bytes src/assets/cli/tui-statusline.png | Bin 59390 -> 0 bytes .../docs/agents/cli-agents/overview.mdx | 2 + .../{ => agents}/cli/agent-conversations.mdx | 16 ++--- .../cli/cloud-and-orchestration.mdx | 10 +-- .../docs/{ => agents}/cli/configuration.mdx | 6 +- src/content/docs/{ => agents}/cli/index.mdx | 36 +++++------ .../cli/input-and-shell-commands.mdx | 16 ++--- .../{ => agents}/cli/models-and-usage.mdx | 10 +-- .../cli/permissions-and-profiles.mdx | 10 +-- .../docs/{ => agents}/cli/quickstart.mdx | 16 ++--- .../docs/{ => agents}/cli/reference.mdx | 22 +++---- .../agents/getting-started/agents-in-warp.mdx | 11 ++++ src/content/docs/agents/index.mdx | 3 + .../docs/agents/local-agents/overview.mdx | 1 + src/data/vars.ts | 12 +++- src/sidebar.ts | 57 ++++++++---------- vercel.json | 45 ++++++++++++++ 22 files changed, 172 insertions(+), 107 deletions(-) create mode 100644 src/assets/agents/cli/tui-agents-tab-bar.png create mode 100644 src/assets/agents/cli/tui-statusline.png delete mode 100644 src/assets/cli/tui-agents-tab-bar.png delete mode 100644 src/assets/cli/tui-statusline.png rename src/content/docs/{ => agents}/cli/agent-conversations.mdx (91%) rename src/content/docs/{ => agents}/cli/cloud-and-orchestration.mdx (94%) rename src/content/docs/{ => agents}/cli/configuration.mdx (98%) rename src/content/docs/{ => agents}/cli/index.mdx (60%) rename src/content/docs/{ => agents}/cli/input-and-shell-commands.mdx (92%) rename src/content/docs/{ => agents}/cli/models-and-usage.mdx (82%) rename src/content/docs/{ => agents}/cli/permissions-and-profiles.mdx (91%) rename src/content/docs/{ => agents}/cli/quickstart.mdx (82%) rename src/content/docs/{ => agents}/cli/reference.mdx (92%) diff --git a/.agents/references/terminology.md b/.agents/references/terminology.md index 6aad15a8..98e7489e 100644 --- a/.agents/references/terminology.md +++ b/.agents/references/terminology.md @@ -135,6 +135,8 @@ For the summary of the most critical terms (core features, Oz terms, terms to av ### Warp Agent vs Oz - **Warp Agent** — Warp's built-in agent harness. Use "Warp Agent" when specifically referring to the built-in harness, especially when contrasting with third-party agents (Claude Code, Codex, etc.), or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). +- **Warp Agent CLI** — The standalone terminal program (the `warp` binary) that runs the Warp Agent in any terminal, including over SSH and on machines without the Warp app. Documented at `/agents/cli/`. + *Usage note:* Distinct from the Oz CLI (the `oz` binary), which runs and manages cloud agents. At the next launch (approximately August 18, 2026) the Oz CLI is retired and wrapped into the Warp Agent CLI, leaving a single CLI under this name. Until that ships, keep the two clearly separate in prose; afterwards, "Warp Agent CLI" covers both. - **Oz** — Warp's programmable platform for running and coordinating agents at scale - There is typically one Warp environment per user session. Oz can run many agents concurrently, across machines, repos, and teams. @@ -209,7 +211,7 @@ For the summary of the most critical terms (core features, Oz terms, terms to av - **Trigger** — The event that starts a run (Slack mention, schedule, CI event, API call). -- **Warp CLI** — The command-line tool for running and managing Warp Platform workflows. Formerly called `warp-cli`, now `oz`. +- **Warp CLI** — Ambiguous since the Warp Agent CLI launched; avoid the bare term. Use "Oz CLI" for the `oz` binary that runs and manages cloud agents (formerly called `warp-cli`), or "Warp Agent CLI" for the `warp` binary that runs the Warp Agent in any terminal. ## Technical terms diff --git a/astro.config.mjs b/astro.config.mjs index b5820c93..12462c7b 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -167,7 +167,7 @@ export default defineConfig({ customSets: [ { label: 'Terminal', description: 'Warp Terminal features and configuration.', paths: ['terminal/**'] }, { label: 'Agents', description: 'Warp\'s agents: capabilities, local agents, and CLI agents.', paths: ['agents/**'] }, - { label: 'Warp Agent CLI', description: 'The Warp Agent CLI: agent conversations, shell commands, permissions, and configuration in any terminal.', paths: ['cli/**'] }, + { label: 'Warp Agent CLI', description: 'The Warp Agent CLI: agent conversations, shell commands, permissions, and configuration in any terminal.', paths: ['agents/cli/**'] }, { label: 'Oz Platform', description: 'Warp\'s Oz platform: cloud agents, orchestration, triggers, integrations, environments, harnesses, and self-hosting.', paths: ['platform/**'] }, { label: 'Code', description: 'Code editor, code review, and Git worktrees.', paths: ['code/**'] }, { label: 'Enterprise', description: 'Enterprise features, SSO, team management, and security.', paths: ['enterprise/**'] }, diff --git a/src/assets/agents/cli/tui-agents-tab-bar.png b/src/assets/agents/cli/tui-agents-tab-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..c72a687223ab12412c2624d479b3838dd4ae204b GIT binary patch literal 12771 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 C9q26p literal 0 HcmV?d00001 diff --git a/src/assets/agents/cli/tui-statusline.png b/src/assets/agents/cli/tui-statusline.png new file mode 100644 index 0000000000000000000000000000000000000000..57a057bec95abda89e32d9015492752bfb628cec GIT binary patch literal 36096 zcmZ_0byQW|_dTqHbV!M`h_p1)-3kcEMM6qCrKB6_6a+-274RYrqLhS`bW3+jm-M@Q zKEEgac)w>j9QPvk+7IOceNArH)VF z%9W^AC0Qv=_pyz0Hy6Zm%F5Mm)$e?&Sl7@=38jgoF*BtxP;-9fqzJ}@&+{Y*rtC0$ zP0-<;uAQ!R-YVyGyOS`XL={WjTEY}QAECmH*w2wBR#eP8nu>KtmM)Bo@5ytaRr zw9r?e`>_{;XC_oLdQBe}R!tim3G zMcZbB|F;H0G!NN9Ys4MixtG-iMP;~6NMxg9RSAbi%djCLiI6^GcSO!G9c#Qrc{<%Y zdV}p}8fM@g&N%V(jauhemQOuQPTaWJiSK=C43ZW@e^j=VK6-RjFs4b0=hhEP{Rap{ zV%vb1Ux=|L!kj#WFqqKHoB-{}UGx!RfkuHTQ~0o_GWp6u=C{icJllt84adP7;ajJK z-#B?tMP(y~JH4DY=X}1&Z}6%_P%&?_A7L)Fu|$-*Zs;Nqt?JXXEOPcp*E()nbMcy@ zt!XE>qgHbJe{bVn!x^Zouut{*d(`J#xhw&onbuUCNx3_ zgqN3BP+%Z~lC&H?sSpVXA=>hdZcf{W-iDeBgqjO=sv92(rCm@&hzLH43nSRDc8-oL z$gkBz5Oe4)l<0+Rt@-3;w294a9J}w|2m~AWYkQ8QYB}M}QCN8{LpXcKk5bXEs{7l_ zPPk3mqJAg)tBy1jcdb`m%0zMo&YU$KV2f$~u7kH~FTLK0Ik8?J`J|IQuZ)`&~!y+voa18mZ8eXSqk7(yzEVU8^T~Ni>BfBi_m1 zHP*>O@-*d@va2qV?doe|W<2+{&91KVjo_S{pJTHbQ%Sox&0mulPm4A6^NAiOE^1wO z^fmUHI~7;nMGc%--$7;WQQkVJ?1`ql+rx`({E8c;AlJ%uk6=T6F?QwPXIiYAAN=}( zyVzexGF=pO<}bQAMpanJ>u~PFd4Io+&1vC+YFofrtK{bAN}uz4@hKae6R)oaVx-Oe zW%fSg3m9k(2Zt{)O%WEwg}5Rz2)2^>f1Hr!jvW3!z99Ag|9atNpm|B=zuvtY#=VDN z%Y9O$^mTo2ou(NX&wH_8SeYfut8YjWDSFG$!r`xHoMUlln=jeT5ZzPkcGE&&b(G$o z5+oD**QaB(E$_rqaDA0X6D!Aj>P7#zZ%H}S(V<1A{u5398(IGQI!>X$dJ(sYFcpcc zw9${bv6bKD*Yw)x?*N18xj^GGN)}>FB9}5#G)DW+L;v}QFZ8+0*d3*+xdWE{*QLvu z`aZHgz?>BnYvPJ$fcLDl9a*{m?96W1?nE>mV7bG$y(S_xDHXTwy2{(5p{EUd<;*dhshBqt2l6X>;=a^7 zQYnV+tNZlLX(yTKB;iXd#nZI;lgM3XYIOMkd#%iW%yMj^lN1~rW2O@`Ph%VVyOiC_ zs-TqJM$Ab#)qa0Jcb1$m;!@HeLbWQ?xbt+XTQf2{vB^{?M63CufRv#O8^rw#dI1mF zuJ0o&F7LCmo91`aq(aYGiN`%Zk_p&Fi=$8ow)^Z)Ad&acwWKjuB#4=PV(lFjGW6%E+TGGF$n4>u4&i}4y6%>doGw$u@?^3Xns>W7|XNZ^!+PMBYH$gne z^%~<&h_mHBQjWdsV5|?F>!OI0NbO z+K%g*nB9J;Huk)k4vVKCqUdy_YIPLtDgE?tjkdxr*5b1_U6Q_G+L`*OM2mN~mB;TL z4KvFfjU+QMnx6LrTsg1y)I8#3)fWU+lg#4G4m@kwJGOI(D;cPVGA5+?Gy3eZYJ1-6 z^A06lZ68m58+(MCEy2HvE*`_p8liHcF{rYWLC-)ccU?|Bcfd;QO5OC;7f!|64fGy< zWO3Z%D(WPussdI;9&(z27ptz-sjADC*_2V-wFU&veiSljOqO|le*NnQV+9K|l*cp# zg8{MCllIdUHtz0HgqHcLamj+7o1MKG{b^i$*&>6lKI^a8yyCo$cI)-+W#^bv*^w_# zIAU8(_$ZzW>&wc1FY6H(;W9d%-0~H0EJP<=l9rY>@ZM=QX^okz@z|p=nXX9h`tjpO zcen3em%x^v^{{)CMXY=UR>ynEDclPdzy{@AKm*Ijf<^bt57=8r@>D$oC*WB`r5wLDkmwS9hw&wAWT` zU0q$M@pM#7%v6QV2)rK|7?9!j;7QpNy>;uBh=>RSgDhf5CKP{YXsFNqL6KX!3)Y*y z>v9q+&qKMN39go>u2o&XapOqsfIpBf_Ku6b=L(6C&Qtfa$Ki^Y#@ajGD9By6i(t7& ziJFMTutp?yKF_CLBDVo^#!3i z34d#t^H^%<{0@Kt;nb#Ca)l{G`HtwdAgTEGclADN7YxUWpM))Mq3IX1Lsn#tr^B?b z)XN?Ch{S%%*HMZ@a^Yrb@T&|3J=wgM*Po~_>~Vl#k40rijj|z&0#e}Z0)$a2u~_D<>AWQv;8@NPRb(0lSs zCka8SgD`avV8Io+bC={DYh8zAdwcs0jwdVY>w8B>(_qpq(UcO$3&h}K=C-j&WbZ{O zJNS=;#J6Zlfmex%=c^C>;uw^22d-yr*QlzKgc$3PF<8l;o^ZV=kKcd&IkxXYImFnK zgxNb{UQj7sz9mRHjK`D1feNF{f7!#GM(!)I{EE}p85QH-;aQgV-d2?KMr3V^Ry)oo zXyqS7a@N7kMMPKPf@tgYoAv@-b^A!zUt^B(Wy06%77P1e(Z^e@kqR{`2+pt`a&`l?4w0yO_w6ruZ5JjB??^;lnqRWYl)W?^cPs^w0 zT&ugxdD$P)H9S12x38qsjhafp=TeH-MsQ;b%kB3{G?>9ppIEau<;8dIh?d8CdrdOZ z`kiq%ap91$yU&F)mB%oC`IYcc{MHM0gBtha-Ni>lKW@r}EG3%h6peU^($EA7V_vxG42@_50>dc$!K?+Xjemv_=`(NuO=S9prjAP|V8>PQ~lu_ye7WA9>Q zPR<@AbJ$r~t!{4S9DeHa!mhnL)OF8(LR&`%E1D%D%b>`uI#oDTHHnm>Xwxiju-4$=^K01btpGk~s_`3_6YXppMB$?f; ziy@nRpLwX(zUUc#ZHc~epvE=JdP8E#7bQMH`O`-_|Z1vk8%E-vD zcThyjQ;1&E;ID~9BH_>}6iDRUZ-;$;N-m!}(C|z<>4S)ix3{Q|!Wd3G!`DgsFYW1< zXUjnt1cAM%dLpkD{c|a3Xw1o5jJVXOuXz42&k(XEX z_{Qei8uHU8TpXOYlCu8C=mi!$DQ9PAF2edgK4L4kdU?txGj6QZWa#sn-^4PUi=o2D zKrFO8(yCnwbS3f-rGdmfcO%M~92JSg4!nZpn;|Q8%G3PdNW!HRU~-S_Ff7chut8<_dU@XidM%g z=0*yXGQ{|SRzB$)X_98{gn%zeFiX^y~81;!N{M> zh}P${_dOS;v9uL0bxr)wS%G5CpiB%J`FIBMqXI-kh+kg;5!cp(a0a*Ei`=?hm1uw*t=$q@=D^;1Y!T!nCIMgELJ8nQ`1idwVu;;K5UN*%eC1jCnuRy-&tB& zaZ_|fWSuQANd$Buk``&tW-yBVzU{P7x>oz3glnmj1U1CHe*OC0JF1&El`yTWtywuZ zz^+j+)OB^oB1qZrX~knDw_5}P; zMI22`=IeY;XV9eG)1soHNFVIsQwx{dj`Ey{iiwGFxh(gjfAc)Bt~Hp3y+9x;JP+2U zFAghFWt!@KUPxUH(Wi|uQkYxjr=*RSHceS5x3U>eP?>uE{N@43i7IZL#Ez37|$y|)d* z+u5||nEO3{wgW#DmC?)H-QB>zKv6NQb>7OxhK+;c^QbLxa&b1!OZE{Wm=i4-X4VyCt6iz{kd5ocWK48H5QrBRxGmz*j(pByyJNQ&R@p zZVeQal$6!hL#%#&moYIhjg8X9{M(|mrV#b-0)5@d=%}5KAAW# zm_Kx~_Fx*U@eRLCQkOX!8=GFKDOS%O20qow#zvyq=&DOgb92FyuRQGRovSYQ?%g9J zBg4nX4-B{NekbJN;bC6(wYs|c>(`so*E-F4f4T(*2JY_e&MkK$NIulnU7Q{7p`xOS z7m|9`inFtS`ubG|fe6#umPR9}&`wjntq(vkW>Ac+i^$CZrdJCM>?hm$f-xDhr7Z*>@s`0x? zNlAZpGcXiw!^PA-M^;`QJYk~hIT$1+nLtnjAq`EP?PzInF;{X2LS5Z)XHHHh>HO@> z;JEw2!NI}o>@2JnLYj__POl*~H8mLP^yS6TvxzU)X=$g2h7b@SypNqK$9*71!Me$r zR{y%-_e$9-%gaf~$O5sGQ&PS1f$hA1^V|h1=6{#C!_KX+f9bPB_-n5msc(j z;}jRKD=Y+Jp;6h6*zD%{+E9MF*XGw>zig#R)JaZHyl#eM&bqpNw#Xus)<(J0-IiZe zcc1*&wIrd4)hVL$?6C6NqQ_()I?hvz)>I+qkmct%H#lnCcjzlTC~-rc`R={#>gs|` z?*m)i_w<2%g#?@h?1jf{V=$CKwY9Y$KYp|sDV+S~=O-hB`Z`ZRXQWO8rSSdx_g}ui zGeXGj7TJ0y;dcQcVfzEP0$hMiw`ZH0o0|bHD=8@nJexv0HItOA-|LZ>o}4^yzF|1= z#ql;6mx#zIJW;1$rl*l73ED0AiLmeqc(g@NT0vf(VpwEHTiX}M`D{WwlXlQ77dU{$}ePoXC_4N%85C8DtgHaJb zIc~mIL6z$Ug*z!WHa0|^dZy#U@n?orF00_uGnNsssOV@sY;0kt1w}_kM~(iP!NEaF z0eiL48&h}g-5a*A92pt{EVE6Nhok@>q!k$N>3Mi6dgsoaQufy7X1nRSS}^j##^>w9 zED=rzYlupM5Z7W_PMuQIy`?VLct}(n$sI@iLlIeM*RF9uz!MTWh71lCKfjnHNy28i zdV|y8Q(>X%g9qcVy|YcBkr5GNV`KG2q!biYcH^I0T3XIek4A=v;hErj0euH>k3TIj zH8c_(3;_c29Uh^`Y+=1HD&1!&C@Vsak{OON*w!nZ&}&|wM&SIco`XG?2>yPhnj0AopeQ_m#ShLCc#k`bj8k76 zn~b7cp@h&yRfvBChAdIS(z-)9QBwFvnC@o zH5CHJ;^HFgnb+YjA(xfjug=RMp`mw_z`bp;y{ZJ|#DY+{n$%4HgDa^V{=vEhnd4uu{M|Ke&`lO-+Gh8M2=Ao2ehle@sk7 zWE9{8Y;FPz504WZ?VqRd{#`u2VNmiEeG)+`$Dg7s;w_IpFDZ;;6Wsy89O@!f?r4|CBz*a10x@)tD%vF zL^jPb-@W_cR17ax8KOh6aZ^JO#@n}V8_FEFpB#x1nw-q3~C&b4;;kfbprZVF|vZ1e4$a~{>psfC|t^n(O zHd>0_nB-kVK}1XY&0)3?s$uEqi13Glj7Tz7*sUZ$k1x(LV8N^H6aiwFyMr-@M# z5fM>PtlfD9*}}@msD8s0>H%d6S!{JB;Z!Jt?7?F#E%U0X-l&#@FH37_B{3*5Jxn8! zD=8`}g1x1uM>%UTFnG1M+;ari{{A~5XZa+vqBtgU(sHfb^z`X0xkwJfI&TP{p-skR zqxbLM&(Oqu%|Pd?{I-j~!T5>M))l+yrzJpO0arJ^aoGRYb#ZaAvoi{gBVrP(!WHcj$8XDMyt*vh^s~S+q zwVUp`iyBdlRz9PZMW&1Uj7?AbP1ShJth_BG7PtD%x6sUu`v^jF*=SXDwT+DpHNFDW z8?v%!E^ex-F|G4gXIWR<;Mw459`&J0!R5xQxOg?GmWzp%%l# z#RU)t<>oaswBNfNV-@tw%quAtX^z6Fb?+##z(`Ho;~_M}#NZ20S7g>?+o2Kb5%ci! zn(2r`>;h!};6VpO9YAPuQi=z&hGIA}G7>;InDh4b z_QCoHB?U$OP)cg57$2X@$-b3330NSwI}tH4q){VYYkT|6m6eS1q26AAw)mfQgBsNI z^lZw2sL%s%9^bIHwuYQ>b-uemuTnK#956sv>8GaIFW^*aYHF62%wnZ0y_qr~YR>PF zkdQ#Z3&t1JFykWZ?BpaYA_8lfU1w!ut8nhMu6Wb6)Zec`z75p`WKM7Q7-Ct%7eC7v=n0fQAH_vPL zbC@HbPo7KwF3!SLN!oT71x)cy%hPJt>>HD0VwFA$xQFaG*%xoii zJUqODPoLg9>A?kz)O+mj&COCagep(EKIxRvA^gqP)vqS6)w}8I;ch0qd|BeY^Yo|L zs(RTzR;nr!3H66yNy*_~0J81uQeiQ$muOM|FCbSy)mN7{3?;s$Wmrz7RpbouG=A~0 zFB!$vKx;`1HAF>OS%P`2as(Y_2BVbZV*m|XN?O~b9Z7d#XY&gRf=_6V1TnzsPESv7 zS!k#$LYQhd{gdXeFw6km&1L_Q$+@273oYR7k~zx8MeFR)pm3Tu~j1YpbgP zZdY+)4tu}u3}YvmNwKBztw$v}pv{j!nQSaqdlWYa2rDUx%t2X*D(3LeRhGnSd1zvi4N#GQU<<-ZvRmJ( z3lwuu-as|ScS=!;X6)o~Gi2XWOp^o$3+p3r8n16C#e-AKjzTJUE?nC*>+diO9>I0B zN9`$;Yk6&AByDSPsy)1)+ID!1Mc-V`SPCwwF1$xZ#Z*!~Gx4v-g326rkL$$s`SSn? z4D82YS-%&P4GVQE) zOGxUsN~0{sE4I_ zAO@8c@`vp`nR0@T(m$S+o`jsdfc$6aucr1woT2UN%op;l0w%oQSM&XV)qxT~Pghq~ z9k?Qh(z(g>3dAc?j5+b19v;U?M1Bml$kNspEj9HyC^Ef2h>1I@Gg5-~SD!yLR5d{P zcGa8g9XWdkM2&_9sqHvmmeojnCXff7K3-lT%mJnBM+XN1ex0ojEa0b@C=;`rraG(z z{p1p1J*MRHNq4rffLFBUp}W0k;Qd&ORPH7f)dWySrDh#}Dh4^N?sSRi(bauce!itA zn5=?8{8pr0y?Qe$wvsiBe`ka2>)<@AHuE0WYzN?(LE5M zpv2ErO+^+Jg(9&`tax@P46I3xciqWfbI zrZt^TfmRVyXcQeSp1@4QDM*0BMTQT@mw)ffgFkB8d|1aNAqi+H8MTd@2Goo%gRapm zT;(;R(uyNjha*F|U;SA9k#O=ydt4($;IW;!_a0 zfT&tnFwJhp?g*p9jB^v%$;#Ac(?o1+Z5@4Z#k^aFRrd#?P82q*mvPLJ4rWa1eVl%+ z#ghFzs$G#p#?X+qrjE0=fh(%{sj-f$gM)*MCG+n?=gCfw^UJyW>A7M6d0#0F-)@rM2OltEAuRuxG@3xX&}gd9y*DH{Uaks ztGVe*OH1~nrE-KXpn`(>407Nr@#|k8a_SSG?cO4hRJlR*@sRRDLar6tL%CiD1)7@gZ2^HJ@C%>iRJRFx0ZmU> z+6n|;DACfrciSZ{c4F(2$*5|Nt&WI#=`C$ZYYQgri;zfRNb9zhnnu(G)O`ev;*|ii z;^X6Ycb$Gdrjx?_ZYV_vKujv*g?{h!G;P$n5j!Uvn~3Y2U}CH>LH1`oJ1YFU)7}q* zVwWKwKbx#VPrM?@gBnWIm6%J9Y5SqPjk47d91_UQRUlGOP*C2fTIlIf+GSzMqo6HI zwiB}+*+}s0=*W~`x5N`(p#~kEk3#CxO9m`yNuQ`1^vV{1hXeinPdFa?`qpg)ei>LT z*DYZ02>j)BLu;z9Ytgm(E*XxXyo<0{L25xQk)}!kxxnhVP)vSN(K9Q+0A`yLUx7{- z1HBP+;(ReG@6N9?PG9Ldp@|@&ea=BJV?oT$JIQRrRYX?gQL6Ot%5=;d^&evb#87h4Rkq>aj8Vziwg?u0`XC}O8{7AWEcVK0}yTS<0Elj zeo|(M-!rJXbn1G;Lr0G@4sYaXD&4UqGDwRLGd0Thxvakvj3b$B}BK7D9V%?W931V+YT#r~BV= z@@j?n_|OgoIh*xtLMV&EGh)Fg;miS0UGbtnBO0{TWsH~=vP;x;cYNC=pB}pGQ8tP@ zjsFMvKtT=Wn$S)HNFGQan!6dF^;$y=2oQ?SN2GGAD=R=;1>sQPD*y(xu@GVDcI!q07Qo#-$UMli}_O} zoys19v$bwRHi_oCBX?P7n% zjbe7T4*FK^prCWcgn;E|=^mt%lqy4%p2C=6zxaYk=FWjgs2FC8fSSk&R1Dy>H#hCc zQ|434F!q88HPqCu2$^USz9ZUSkTFE|5729jm6fdsv4M*~8P65ww_`)O7b1k>gP-*#OqODr@W3)4E00m_CBbLMP+^5??ydsp;$0)=i}G)_Ha5T%W|>ev4a$t;Jcw;5YlzxzCc(j5cMx3aOc|J* z6!NqL&g4T*PNTq&(mzGE6d<REdMES7n0Jk~1pY1Lu=3!qW^<-tx3M0_+(yQb5=g zeUi3JfX)1gFrEnx4Ye5-3x=);4Hse9q{5FMc~WqJh?eUEe_Nf)jO-85ZMxj$yxbK4 zu}dL_3V__ry-&tG&7$Q16650HkVsZgf-yRJak+~vm>3y>t>B@ftGBKIa;*EU071-h zASqS1FH{poMl-+^3JD1Tm6ly5BCj`k>yfvS(I1uq1Q2Qe`t~aZJi0C~twl1Z(j@!< z#}?|8UE8l*Sy_P?1uC6e4Ugd~Xlz2qA(MQb@aOL(u>}!Fs>hm|BsXsYqlGm*3M_+Q z=@a!=K)!_r2N&p9lW_o5rCaTKckrHrAXUbzQg)m!bVk3T)ViV~PA)Dk9v-4W-r^2b zhnY0hTnGzkQ2%IazXss`s(An#n=t`PR>L!pODy_^>p*-wQJ$-|fkENGY7N@-)YKH{ zifwI*g5+xXkNuUEwy;{BGv}+wxe|7-ut?HTXy8%l`rm6j-doPj&IS?&>lV;HH&SlA62vVjldO|;mxBXTrzf?Z{N6y<%m7dZ0_UA7 z(|7l#_^A=-4(p@uEv!v5wX|$ob>Yx1zM^%-P?tQ(vSy_wDBxEkA|to#DTjuY`Y-Cr%U|i5LLN@yG@R=1M{y>Wzfn<8FO`}wW^6^` z11z?y>%G*sV4=lj#q3^tODa-?pKYOEN*h}1v_5I~jf{Z)s$e7Au=ajr{g&hP#-NWB zSUp!*#m=F37I;19rOtr)-KC!N^jEKBNj2Me{3kJ79bO9-JJuIg!IRe-q=N)bOG|(h z%&~0dmi25fcfTp&)_x8_Q5|RbiKZH+Dy2Qg+Y2XU@9)mVz3XCiS zi(nIPfPSqVr5PCCAoX^=;a~rln}#BEaO2x=^n!0F@x+6+Xu;Tgm7r$yNL-4tv8{tR zWlEj{8fR&#Q$L<0VhC;nCj=^P%zVbePL9gk88oiE>!og6Q#F5GK$8OyDbOxK`QE#^ zxk(`Y+epd28+15q0yP5z{9N|>>Y!b$QaG|W+>8U1#H1v7Sy|D8!AH<5GVk*3xa(Ox zwLpM)LVEf)AkC>oTpg&O!^35JMoRI)6`g3B8hj5-wF1?mk%9Y1P`|`IvFAy#+@$^R z{yhT^&n`Sp;MmEdMQdj$mrnVFf;3Kks}MovRh zn4b^)In@d(uS?a@>&BAU1{}J@Aa$%9N?fcYv+?oqJ-Bvv4ZJq^w|!|Pe5p>TUCbpU zB)?Pn-*pl}9$BcUD5%H2rvYU<4zi#QK{F0So91zI@u zx#Q(@0dia@;h`=AhG_UC`{eW#pv>#k)LP&!<O=K_ zfHss=RSZv*{p>7eXfg`Lr`9bsZD%X0k;eQ86>3UjsVztzK)nAEP?D2Jpd$s6F|bnZ zzV9(nvb!p*E9LER+1usp|~AA;~<<`Tx_#9XQXgV1sD0-pA4hnHmG)5}`CGMYR_EYQXmU)ikNIV1 zXD85tZc`qiQwoezoF4{OB^^T795l-)&SU;G-0{yX%o^vSEiXSFdbY)Djdu<8Rap?L zsnIF`Ftxa7S8TyvI%UjwSKMn&5Fk83OajGE!y;9SE(1w7IkQ^rMatzrN%7R?PaF6& z$LUql8+in+86eW2y4$!Dk@L8))f}3YH7+G7R18{t zQPz%Kx-2QKMDr`tX^vw%1QPXED198rOgsDIZ#nq6OHk-v6Titi5LAvGbQMkOgsIni z<;^{r4{I~|#@dbAspYmUVULqgo5Qs-KK!AzGL`~N0$NTR$^+v}dh0#X9wS+C0gtev;2cx{Wm)9_8gDnbRV1qW(TB>E2R zifXN5V~jrGJb`Dvx`gk1IoXHz#bGGIdC0rO(fYP?*pj7)-K^6aU-{>#oF(p^a}frt z*rXKl6Iv06SNA>7L1P8+s&8`Au0)%RUHgiH@3a+~dDInkwPnem)Ov!9=i2HrOL>Rt zwKSB25^=baFRyG+kSGe1=gpueOKpMjDohmvE802pHRw{jGuelVD$7A=0MiH?*$e#W zy)!rS$a2pG+fKmyKwS>-4!`pt3EJwRui4<4J0H8SVFB6|4T^KayoPf`L)d|%ua$y$ z6#bietfkj|=)<*3C{e=69dePxRZlqVz6z<6V7+YpNZk|l*rA7wS@W&V{maMm_be*# z786ZB08tz9dQe7i>LcnxTJ5JXU4?za=~@m=+@Tx-^@r58iLRo(cN~!&JmfeT%H1nw zX!{ljgrsMVXR;Oth7h?t=G~x$AvJ@{Gy^0$d%<^s>81MmEBP#GQr`lTbTd`1-cDe> z;=(_iGv7~Vw_(N2-lTC?`qaqHC#Pe@1LMav?RCqTxmPWed@SUX~s^LfVh$~~g& ziRJhSu^+<;TX?dTV^h1A`Q7;Reo~*(@mKay#Jh-v(i$y1q9lu^{tzu$G0>MlJ(bKF zSAJSUCi5orQ*AD1a{zR4w%ykKWr_^!ZX;@+nD_DiDsLlQ*Lv5L>KRSS)HbqjdVR+o z01ed66r`k(P1JOBJPv=2vZMqs6-3{Yar8I%q+Rk9JRP(G$P9sB_ziW9bn%U-_ZaWJ zEvTvS25uje>HoDap`)WiXTAn)0K#Y=>m~u~uYseYVNatRvzsY>OR4+JF{fk?y|yZ; z^{34HN!@i@7ErfZPupGEkFpEMj~+RHN#>|duJC-yZ-snh?t(R-^w8{ed4;;44B>*K z)MISrSm{wPP)mY7avuaCzgkdm^ z@A(L)7pJrHoY&OyQf;yl_iDrIqbZvsyU}+-yrbW@cGZ-&39MUFT3&s-X%`TFDO`d| zjNpNtMm>055<7Y-`fhDN27RGQGX6?*8U?lF?l$W34KapO=B^fF9WBc1Cv8erf-3(T z3xk=k&HGFPrhJas6)Hs$__A7Njm7au!Wc7hX0$ndd|7pbl5zN_6&GRp{Oq9L3Pcac zi-_>u?rfEsq-HLh$MdpU*c2V#FTo2jCYRUJ3^B%R&5xib4w-l+(diP5dmV9yz2l)n zQ%c{?&z;?e;rGcy?ojOw^@+?gMsX(?Fw&$G3)ky#<{sjn=8fJQw#~J1&v!@Z@{u&& z_Mlnb;XU{eSi3$X-_R{ZxUlo&dCK*jkUI-~oT;)MG8U$$ma)}+22GB_%&trkbKi%u z>a>iBVjDWdZDE*ZLTBLM1NrS2e@)ZvVg}Ri##Rv)F{5ECI#G%E-ce387Sz4_BY)ff zbMa4;>74{di`$0I2(s2||C``#8JhU!Vl5bA`E-XQV$38N`q%$Amlr|hp(q+PW>VDl zA~>pV+5hipJyxfMTRkd`3$%Za;i`woc&Et(@a()jhwT?Xg}|K9_P zstxW83WXS(>S!W{HeActPnmxf=RW|>KTL;`Z16{j~(kdV{Q z5C7a^i7T6)>1Lx-Wxh^#99bxW?fT!xY#w*h$?-o^qS7?!(rkZ!j;>9nZGW+i+uh)Q zC*G!?S<38ot8Ko8ujf$`q5R%n=c`89fA$MAMC+eb|94aWd#L}{>;I0M(=`8c2s{PL zDjzMK6$oDxqPqXb?mYIzoGQg}zkmMsklRvDqiF(#{+(0(KhM}S3z^v7b0k3&TgZ$p zve&Fj9-@vo;HJ4ca2jZszT`j>u{& z{d6uSGUcGv%E47wOjOb4Oa*<;hJfR14J4+H450J0t}CYcb=p9kOapW3VM#;~t%rY9 zp;cfjfpb8~(m|DWtJ5Qm1<{B|LVC<=(qRlrRIS&gYhKBqNxghMBjj|1BGNpmu%lD_xO z+DUDt^c_%@8roH2kZyeXUB`o5i<-E+khfu5xR8GfQ+p%pxps9A6Z@7Ge43fE-6i%O z7g^|N-6=&PZ{LQ_`f#&jmV=SU%Liy1J%m|YxcNx8w20vJil@xC8(wRY$Q6ySA(8rg zBq6DT#NCb)=fsFiv750=0w}j$aIxN!)w)An!x>ot?opE)VG-lsAdhWpS zP=KtdjyeefhP)c#za@ZgKn}BSXME?BQ$>Nu7&Cw$9Ib_*M;~RuMMn1udNs zzDZfpSalFoW=vpE%3|ih1xm@-U}DmuV$U*U=@hkukR{@;ArkrQK4`L!86Fe6MH67A z1Dy~`@gP)?<7P3JvcuBHH$uL3Z{N?0I-m^paY21SlhK3?UD#X{(MKE6@-~bEEGT8a zf;1KYqbk?DblnKyVomeYO#L}%5UHGqk<+Y_(0P@T$d=cQTPByUzZZ3*V$KL@N9-LV*u-qHau=CegqSY3tL7y1NB7@CF zVGgB;!(Ru>iWi}xYu;f-Z?F+ zXKk9ttWHmJ9 z>FVeR=^Ok=;S!IoV`}1pUj`oJ?4ZccIUSXfW=t_$shW|FPO@mk&CP8<2u161$NVOB z9No@DN7IB#NVsqaCrrBssRPXl!xD=3?-QY2)E-Sy!aPBL8H~41BlGgU09_RJ$c_Gb zD>UPutmVH6!)@+}%wu))wz)ho^!o*ak&`otX=&nq7vA|p&?2MQ#HQ9%%*V!?=+H!hKI>WNPh3e;5Pj}KK?TkEG}+9=w3YuU7rRB1Ue7x zlX+mT7ZM(Z1P8YR@2>u*Z}sBBxA)cNH`4w{;0S?gtGT>5g|;NkRM^#VAZYrs6%;6M zKxbB$xifU;jBK@15sAkTt2r8au6|fsTZ5LmQ=>EL+tdGBI5oAm=e8Lyb-IqTtNeV}Y^w-emAqrS-b~#rY#A zJnH=yaln@VsqHDGw{@p0s<5)myzBnMhn&pJuUB6PY$QN5wN~tP?X4B8fX>H14fQ`2 za;vI?noc%zKnDFY-U&l8TU+T^ZX7xds?gpECy0zo`lPAY=rR{yB zhPn9?jJ1%+ag*cL9Wh2-TBXz+@i-abuek`9jn;tT02((4CF&$wSt1#(D0Y=tsId^{ za+Sl_J2a!V&yC4LlV9p=In>k>C0HLy2=2=*SDGYiM4BX=6-158VxlBnJ!f?~n7+O-KL@Eu6YJ4r5Mw&uR}IUhY2(q(ehP z>rFIvVa?$5`tFWGbLLdzI9H)uVED}!h`mzwpaq{BY5m-^>`Y7+^DWT{o(tu)xo&$^ z%lckVnbc4kM9|br;~6}bJYORU(-Qgc$Zs?S$3M+DOOC*KsuoINn$J~E;UkZ91(HO3;I z2NNhQg~@$ePz?%a4&qALWh|oyR$q|8(ZnrnwOD;KDFO8Vo)RxGRp` z=ZX}iA;3!xeb`>gu0(`uGiGSOn+yH@-~b?79^EoTAz>{h`O_K@`u{cc-GN+o@Bhf2 z@3Ln^s8ouqY*}R_DU_8+R>+w2vd!Oq48LmM?IRe28Gfbi@-t?e6IWVh)AUSB>MT*AY}lX}%G^C9^u@9yEVs0G#IUGq>*)L)X9|+Z zt+=q+ppmn)jDIX)mM6@FB#G;n5Eq|@wT-~+14dgX3c6xBazRp4(pcN1kc(RA4>~Ydwy#$|>DOtUI(Wp`9h#5{UE*JqH zJUs8P2-zYp^M7>Pcg5PrdX|r{=o;JsREaJ%7sAMy4Oktq++iot-RB($~2gYh!w zhYv2E$()ybsNA0=asQ(JQ2fQ@%&`CJ@Mget>Yc`wVD>N07pf1K$2eXua{m1KI&J5^ z+NM&tP3a9)3UFZ@Q|?O@C_@p7S14&Eew?;j@1mx4w*u4rQ=ZYLyqgF4#4r z<9J7`-P7IO|Ib`LG*~<>$#?G}S>>RFgdx1kT=;BeaWUxEcN6VI!1qirXWDgV-?%|i zofw_cH|Kt%Z|7;ZatHQ~bH*1M*iYo7jagL3#_-WB?VHs!77)0N?$1Pw%{b@Rj}iDd zj&R&34q+q?c)`L+?;NEzH#SsK@_rRqW`-y0ozpqR&GkoGc-lQ1CB> z-X+f+oPW7<>}o;$*xs_J?8p5A3&c!e*!>M`1O!S*uq2fQ2{ zH_Yf$*`J0L@3wvBDVTMJdG+{3m!NF7|G3XhX>^M+Vl&g0&H&K@??iPzYVg=tWn5(B zJy70o5i_(%q`mj8Q-mlQsvvOv!ME#vM!mBpn7+K)n+H7;?2xfjkAH&m0D9lziW*!8 z4G0W(|Fjd?)OSiH0*K1X`v4#5i{^2N=V6k873aK>5g`oc)9UIfAbqNoaM(}rDgu6w zN7U8*E2;a%RpGof`sE*Q?T55$udukS-a!T2+TNZ9^CYy^&d!Pfe_$MIfDR)~9+Pt>SFpU=BNAM1+$6b(yXCx)9yydT`#|RylZ}~u#l31 z;s>%-@T*!`Ss}7TFaJ4wpHNw5nW;SvC!!KyVuQf6=IcLr1p{2OINVZrsd3TKaA?HD z#4PQ!TY2*238)nOZGLVp1tsN+iV9vue^_ie%IP2rN=kxS4#Rq`U=nb z9avfO9zBA|^Viy1W066Cpt!ipnswR&z>#AW&jk#KC@2-&!`uY*q)v}+CA-u z>n~bZJb3UxzpkuHv847V{Om*v4fI%0^+C~x?{wM35yojOiiL$~AM^ZPxPNL_drrai zWP(5jNDxG$Ac6# z$<7Y4%gofY`tm#U9N-+SI`SVq5;HD^L!)WjrM$B8f$a6Sw$Hmu?}Pcr!n+w37McC= z(4WdU1=b6{T(F7cS}s;CE55q(T1wM~2VDD+eK!Wpc#Y zq$cd)csqiEg6v|(V=gi$Po08|u0TpAPwb6rdi&Ha^5BJKzPJc$k5{c$@g8+BOtuxK zfmC&_9I>xx+S=dV6R^b8yDS{_6-!=L#ct}y9tQctQOG@0Jha8%c7tTbMMn9=%HAvV zCzuPXoBM8*F}(U1jwb3{9lLtMV=|{^tnlpYJ*G-o@U2dybfig_yh;de$S;Vs=P<=L z;`dyVhY9q(D-1}VHWUXtek2nGWNS(+>X_EBrXVkTtA#zPrWT5G#xg83lTQ_@5FK6J z_ulqIC&z*CZo7+MN+D53eXFUihJlcXGLJm#wj&x|iC$d@-@uP&=$$t<_MU2E&F_7; zQrmBD_S{z2(NV0u48m8)r6WFRb+thMclY3hx2~ViE5Th57VP2fE*kaID`?%z@>bE4 zC-OwwQ1jA~c<0LD`oBl1+bBcF(fS?H5=8uuRJ5qN0Z}RO^de2WI(|a92eDNa$IrxN zvr%=@M|t6wga8?RjF2|8?+sidP}kGGXrF@eYt9|(KKLuG;S)#=n!_2;3qr#rPxR6? zeW<|k1C%gzL)Mpui;oYY5E!dqtozX34l-$J$DR!$%2iMkCGN zfeY7SOjJ&!U7?tchC{z*bA1uj*3;g;P^=woV~yJs?W{WfcO3sQv9Z6rm zdf*%=t%Z@w!gTJj5g z-oo;HolrnIf3B4k7grus{NR12gnt>Yf!G>A z$_f#%FHDI++nZn7%f2srbA)5miEnRp<$0VzIJ1URfuIUU4KF9>2A1f~w%T#>Re(R6>F?qy;Ffo@r;bWMjAh33J0Fb$U%;HFyI)uVatT6;O&Y(e5mkh8WWQJGr^j?%n&n+_F2=$0+3uI!M@K1nF6ql5ijtC2b8aEe| z7(BPWbz4xx452ICy|qLoeyouaI~xuHoOVi^-zD;UU&87m_e>?<$jAd>1$dxxE@R4u zhRiLlcuZZ2$Z6Qy;))XsHYL$Rhw@%F!Nw>n>x1L2OblK=8`!>yXE}vRywFwfb!b>n zNEW|;FE=IXKdNlnQ-}cq{O&}>82r}2aPcoDWSpT#N=Qh+IWGR|)yDf7l&sHwiwbcq zJFJB2F^Z4B=sU*_?*}vUb+nI_BTnM?-%@0*fQ+oIWZX*Hvg=;7kNG@b_Oa zP$7Rj?Le%C=VJ42FO{E~y>K+~^V`gS5V&8v2Paek)rh6Ikci0Qm---V0{kQ+mDjeH znwdn_sy|hD)7sWUu!Qch{@1WWq7YI5G_g=Hp5ymH=ot+YlM)g|aCSCY8bc?9H?_4C zq12FK{mj^N;S*etYtT&byg(y*=QcZ?x{=>jtmIRQGYIw zi;m!mGfs)fx}zOI)nE6J0V+qxLe83->-p2wg_6YMHKB~bu-zQNq|aqbuir{t+dkEk zCKtGT+XBY&OVHIs9nc`SYZx5X-gQbSMJp_UTF}S)>-eq9voWXW9OVRheo<-i*dxk^=vPthR;Kp9rMH<`G?^;0>!gtTC^B8)6~(b#YmO*Wr~ZX}_QR{F-lMk329mLqmYJ(AYu5?BL|Y%g4t^ zOZ(MF5neKMsGUJu64W|lQb)LA@FIXQwnXd>{P^Vy5%t20SR3{Fa`PrMtnPqsAg&fW zco23@Wc#rfbBVP7#J|3tIYV?BdDe{gJ4$hL*btRUCMnX$O`Dlne<$)lGzvyk+Un|T zQKC5<*bt%Wa1CA(X2Zzm}&Ol-9o>^rJ(_1G} zrj9ubz&TBHC{$D=6L#V2Ad#c13z<5^O$I4xASxkhB37&^7AF>oWiEw^ytK3z%0Qx! z0$4U|kiVY1~^ZG!d{}Lk={W3eE5yoA@;Lja-QH=hzvi={uB!D>n(H*W` z!eJKt$qhzHVyYi931wk0X%;{3`5o0*^zh+`{fA3G5H%R^prSAUVNS6DPS;41#pw{A z`V0^$@Bn?q4JbZwimQv0s=Tsya{7nl8t}C^Gd#b4TrRTshdvadPpB-29z#GdFZijE zZ8C>K4UrflpFHwg&?CV*3YjiK=8|wS;AnChE}ujGO|XJP$4e4F&ggGYXWV#QhAsd& zPjf8g)Oz4XyTws@317b8oIsQv%U7RZo5z18x;ea&*6>;c&=BnDXvR>Ia14~|3K(e>u8tTh`<@grLA%N#L&+1TuLEa&HME2|CK z-hwa9fCYtgZf53gYAUTDP2TKWZ$1E1*p}R;PAV%aLtl*~Esh=Dy42URQ@P2-8)U*~ z9ttpw&C=1+Ps%L(S(}Ha9OW4Dc9`AQhsPTd$^8!A-#D5q&Wgc`XgD=BZI~}2#!{(4 z27Q->n}_Gg;5_~w$y2X77IUDBoh&C#dc`S+L1{`P&{D}Cc`|d3%w)e zJt(cc7R?|3@PxDxCyAJ`a)wfAfm&=8;yp%wp!Lf>@b;cMqg6cOW+kQGa^b9)0 zs1k!9L*5?A{RR2?B4T3n7h@BJF#ffc(QB-7emnX&kAYIx$Ox%H$?@?}5i82e!?i(A z8LF3$NfSY|#3lpFjf#?zU&yLMAy$vnn1IdU4?_xy2WSqY6d--&akzRMITV{nEQ4bb zE(5HI@U9X7))Mq9P&zATy~YMWD~h$ubmkhmlIz#6Yir*U(jJS*uV53n5kpMN$R3=> zCcJmCV3sL^dj4L0eGsv6z8{s1`Z@1jjU5Qf+w-CSia*%honBdUpkt(~OB@|`b%1gx ze#kT2QQ-1O+8_M;eg)IsAB3!)pPh$j7f^K&5t7^fRoKsrIgE3dm>p=o zTx3p~GRCK`tu5>K%TZmOg4`B)G?<&7iKWHI^J|~6vU)i31FmeiXwfI@;=zv3J6CSP z;|_EMe?Z;axpODH60e0gXe@QR=G@Wem5HUjw^cWQwc5x?!Sg#upNee2pK^3LwcbZs zSv_n1Va$R10L|U}U%6d7ofgAg3{pj65S=~+XWa^BO}7zqzAIq4iN0Y zZlj?>eu$@O)_TB#6#T=#Z&yUz9O zC0r8u4Y1?t(fhCx_#t7Z>zcsGskBE_P3CyPo0i|zgwM17C#~4@@^#wp-8AAQBjA8K?(|A%QwF^%%UQK zpUGCI!?RMkk)E@9Z*TVfREuBwGN@iqa^tFXf0G*~! zV?C4iI6C_$eY?by;-DKyBzKE_Xca5&Ykr0K8l8?#z!yh zGQ^2Pp|Z5H0;VeH-`Ze1B91eTv-9$f_V>fxiNn(__qa(4H`h0MN&$KK@`8e3f``zW z7G&O3bstU{kIOh?7{U6jgE_^_j8}Byve4@wga%+jw)Epm;A8n?;pHX5ak{4Fc!u5; z3`>aOIw6QSRT%|^jF}CDepHSW7ar|=&eMWyj#9C!j!*J^6=Q1e+Q`EGo|i|P!e>WF zdk@C+1oK&Hgfs@?1s->wMSN@se`Iz|L4noA&)mR3Hm6POX(lEnwORgVaZJqknU1Bs zCnXK+d;8ES0*;;2!Uc}xflQfKE|{h&Q+UXP?|sM2C5I#t+cVa`!Wp>B&s`Ap^k1Fr zt~oGASHmJ8bj)KbaqlT$66Pg$ZA=p7HFEf(2e3E)lfkzN>j6$8!Nh7+i*p7-M#)A- zo-cXmn+nY`+#4G>WB_vzZJDNKh8yqlcUQc4;l`uSaf|Qp6VbM4-o_UDI8{a_Ccmu>v(+JE zGIQRTfkzw#s&soLH81mf)>5Q11{xVPKICF%-a+}h&Tn1Mo;>Up{aao_ZI<)6_wY{t z9L;1|UJ>Iq04lfV?~3K>nI$_e?77I^{G72xHQ7qP&SHB4u-&cmL1{Rl#Shz#(zzxI zHSG@&>E^0+*)I^*Dkc!-ebE`&bmC$d+pb*$yATjgqHf?z&zCa3p6uZ?R5o>dry20Z z=b@oq9lBhe$D;$c&a@NY3Y8E%@~m_Uc69XwSkRTw+Jmtu-BcEqqW91eM~m|40T-`_ z*0D4AC2r95h&WcQrjwY~{X-R$G!2W*M*oWP6Ypy^4Wtv>bE!RgJ2Ct^yHoR_)_Z@My=6^%#f@$ zc5`pi=ujelv^}`}$71_$=Qcf~vK88}Sse&+ z&OCtZo51OmQ-;wjj5-4v8~&OUzk^-1}znauj|8fPxUbp+cG@^bTOb zv17rkyIAg_JI5C%2G^8{1!0QFV(7V&Gc@RB5Nly@2VF@cLxtwC*DWn*f`aA9Q&vI4 z|L!@`!dmf%z}OOtdNd&q6-I`K`LnKu>nV|Sb^%iKK7Rg*@lF<&)ve9N=0%ZMM6+(eRD&24 zSU!R!O(SKxzD;7YqPGPp`pj5tctKBJKjL6!%B)|hrt^{nOA7}ptH)-A5v$vMwBP1F zQ^`P={!VCWdTHQufB#Dut+zrW@E$(?NA4iNp;K4xUP6fzIIT?ZdHyjpC98 zA}Tc`G3jq!E4LBo1&s?EG8k<6VA|SW5bbG#z9XVpAZm}JwPy{lV~@B8Z1VVM{7%mI z5K0eYQIWMk9r@w0iJZYtfXR@32)qt6p9D{fhnE-REmbu&Y0U2CQc^!yQs)FOA@mR^ zCI8SaVMOu3(UdKU7h)>L26+Qa-DokfFp&j{u;HY4eV;!g7fE25*Z#qc@?xj^=-{2K z=!?TK2Ey%_nV9GX3L2dw$3c`7;P4m9?Ya@80{0-uA9ypr&Cl1}QTB}zoxI*_YK5Z& z{U}@~J17>>{eh&rC0C zDvXh%*plIbm{zm-z97Z@8)EHf^1X-3YM}}_CM6Y>4O7(Lo>Pard&Kneum4xhEJ6~v zALpT+-f{buRFCm-hcS!T35;QQ?6;;ZwTCs$g%x&R+3o)b0h=u9THen`e!QA#4Sq=L z+ym>_ZsD=nDNN51c3m5UXQ6ril})G9mJG-kFNKGV08k?SBN zL%FB#bpRe+_V%yse}2f6K6SiV{BXVecJg`i@e}y!fzC6XMn(t4#QYcQ)-yjXzXqgB z$*Ta(z<|Zps2ARtJYV>V)JI@@3-7j z02~|_zkfnVpu?A8+Qx0M_FW!%DTW3tqt5HsJAdp6!1*_!)p(B~@wA)5k>O*?E;XY` zY}_PD4_|zL_>1HVW(`O;usR(_Ug##m^!*fZTp@QCpRKp5q^nz5jdNeCeTISjytz*< z{7PQ+o1^-HKaS^=Q!Sqv!)&=5dy|YW+S4v+dHUnM`aB2 z{-+(@=uk*ve}V{9_9Ta{)!?!^TD9UTk6!29yVNW7yjq$YN_hkx)z{Y-6kH9Db%X;D zMKjd+N^4nGuBs-JmzGZt8|A90qD(BaI?ck4G#&+|lLT_=x|?D(+Pj&~X{QEeu`*nh zg{WWPf5BeG z*HNnRW~VmNTUD5X@dUoAu`Xfv0Kr%#zwYDL!JunpbW%?bSuurApN88XAc)fSa63_H zrG!!rIzNu*p=UZwO_rW1+ZaohNZR6xDUak`CfiAh=OJ${aUQO|Wx8Hx`%LbVylJ_e z0csyQODAI|^`n_HX{o71DEEdN(rtede>e+IXRbM<}07Bmcx?&jE-{IX_N;A1*LYBk4Xo`y|1A6xxVvYl?lG0_Ex$GE2Z z;-}s#mhLC^evRgQ1HCFRH=yjGp+*Jd#y7eiL7TQLbR_)r3t(z9k|{#FMR0Y(~38Cql%_80LrK) zKftN`1R2Mu=EMs_0;t7bYSw?^kag>rwVwQVE5nVa1z}bYb|`l|9C8dlh7sPOJX69+ z0Z)EtXkXMNwELI?kSM1g^vCeAXbqrU1T@wEDXK3sE#CfhZJSb)QO~l0j6HtHalltT zOB!k2R;?;8Vt<{!R-M>;JnrRZd+W)IhwdV9$oC}zD?`+8d?uHYAv7ac2aU$i=g)jB zEaf1Tks$qp)8WSA+dti!nbC|A!PWeygXuG$my|H+x!x#vbnq$TbINnIve&1H8Ow-6 zy?j(Q;{&D-(+h52*Ie8m{P9+7yhkc5={xYlQ!P?Bj0^oyxBv62UM9_XS%dSKk#}=) zLP&ua-yV!c6Pa|`KjElGqJ}Q-rwWI=BR{r&TnnOeqCWZ4?izRJ3ic_v0F~n`DH3l6np&JLH0hE+qz-jXGRjU0*YUYT?h?nIAs7mrW)3EB54c+hIZ= zY%6>wR2qxHrFqR*InooETsUI{e0wd$!@|M{s{BSBcdwwOWhHNPl=3qvgXI{QkDWjb zVxvoalwDP+Pln&2{2grN?B_Qd@K*lPM|LKGuv@7*!cJyD5%~4E&LlQ9H%lBn>Ycf6 zXaDsGJu`vOAg%*ZTYwD55kz*(YyiAEZC0Mqk4MeMh84E{V*~)vU8s(b2Ho4+yy6dl z5TSN`g2MQj!o=x!{8MM=O1(?}f{klTkK(jyE3&zW$130{zT=+s9pVIb(zo)r->5RZ z%%&WRjHD*WVa)8XU4a2^RORZeAmh}lnhjP@fX$vw$eANuHB%lBW`+AnG>?`>9XvC_ z2+PWLUE-hf9fp(^Z{_HH&_h&j$~tVXLp1POpxHWF^s3vXOM7P3hhHiO+%PATY!*j+ zGL)?HooaRI*Z?%Yjpd z+uBmybweA{5RF*1V=@MqoM?`msmrSC=U}5qt9$4^7 zd5T_bW2oi=;GCrWZl^bJrgq!BzpIdz`MJ@Rr%&Qh)0ca6j1?9Q`9$D!?Y{5=i)ceb zlig(wlN5zRtYV6*YT#;%||VR z9)9K0_YSu*4##L0C}#%ad|2gZY=Lk`IlFe~pT`HzJ<-zD{r9u|A4oj3xzN)dVEuZdLQzRW8|cyegW7eZ1;dANl*8OcaX-GsC*G?AHG9X zScGivj!cELr}5^jh6_y-BaHWzS}TRkOZ)c@ol(`|0WQ725pI zuKNa<3|miual|{yDimTBt~e?*8ZhP?+DJkwQ%a}ioF=3V^tL=C^l*E@;7g}h>4}BB z62p~Qw-0t`M!GZ5&|q$nVDY5hXa7CgMe7w9F>FGM_N{@$1 zk$h0pPita?izI+G_YHUo3O0VqQP?5=r{F4;+Y*{v0G#b*SZU(-bpSqs^BOx561fDi z(jlmhkn0*1j>sNJ$Ne@E9{Nl4S?`swkd)oKcM3n!DvvyuDJ9tnclUDhl87YkX<+d# zG6*^L&OD5CV_I5Mq{-qAE98gNcsl9p>jwoXwXUDNyOJ6&xe$`~ik^`XG2_@qGP1I` zmj_CvCl>X{@Yg9Bgy0;SuHA`36;xh8A&-cPw&M531CV68XLS$X0%`%#mNLiya5CH| z1c4832JuDU9Me-$Z1MitP61jzeVS1F6I~@voyJ%M)u^he0c}Q>q2(y9CBjp85ht{vqWE6g5BteC zi-UjHKXq!yGev|vg2V-jR8(||d-<5k??X=}%a8jnA8ISpNq?9w(j@x9HvAGp=A^Ro z&Iy_;^5fZE?HfZoCW=SQeNRSy6BOW;y)fQi>7Bc z__(H@lu53VcTN_N%8(O^cdmPRO8gdO|GV3I6HBGy_h$2hj!Jkue01o{J&`LSKXl&z z-I(iTSKu=lzkD-IKvof{p%M}+m2sttL@%3bDLu z{2F8y!pTzc?$KF8GW*eI&XKod9S@IO#TaW18Ay@CU{Qk`B*LwT`No*}xw+|P2#<1e zVMpkek)*yJV!RLWEVj=F|5!gC${JvdY?8Fvw|B1%7Fj7jaz&vN?8mh?J;#_=v<|qP zjk_uO2buohpFo)_V)ll(eft`SsB<5Jwq}CN(d6KWw@N_H`%Fzu4cI{13u*{-nl%M{ z1UMcTJ5I9Gi|(~^8iJ;W&8o{W*dchabiUE#cwyl{Umrr&v4Rmu35pg;dF~z_NGN75 zKiOKFJy3n5?lKf)kouk8O%ZbZ$vFofpO@w(7En3&+atXj!ABUh@eQ&_goK1T9w=?& zUOe*_ek^`y80IC}MXjG4=?0b76}>O~L^b zlI~cs3WML?S{dUY%ec^ndSEzDo`{`3EwGn$n(SaB$@SpyTRjD|Z?wh)=Jv&!uTYcS z99v(K?=o5ae#yHR)2C>ga zxy8$2eFUvBTFr`77)0M->1ZcHg21a~3X*FWVgXFV7F$ym)uRgl7;rfmb;pWL0PZ(I z>5jX78*Y)ZU+XS1xTJ&l0nw0(N+V7{gxj`H*8|e-{=Hso6o3GNHYDa{<6Xb^lHO z#{K8uH72S=9{3*>7w?*KgKQg3=ev0`ECP3T$v)@It3-dpvNzmH<#W?fuov%-BJ;Tf zu01UN#S19|mT?Zr$`OR1)WKu`>K+;gf+|F0V1UVeR{9JWwQrfW9HkeKaZZfl2XO<2 z9vswm$@ZTT80$kDOYQp$@t{mni1X!l(&`#OE4ZWts4DDMeSPIuI{CDyZB5uN2@=Jt zIo%%-Xf+jQ^*#8c5;AyQ#t}Kx`K? zo1M%3l)HERe&qPp@tw3iCMk)gRC`iEA>i!6h?ybW&iLjM_zUE-e0h0YL?N2>=oe^6 zil_6r8HUDQa)`oQ%xX9gL;J zIN>5m+R&k(f*{;U#<=Y1Q^we>9OTX+lwRrIYA=5EiGZ=fNDA~C`0 z9)KUbR?+7g(vIIscF0aVz0Q=^M^=91+O?|u$1jVQanYcU*;>Qd2N5Yg8DE!K4<# z`W-iA-e}r|Lez>&df=5vzcPv0yGa0Vx*ITWe84CbZeDWj+O_Ta?e%TkOVBM? zthDue;!38^H20U^lznc;vH77%#;T}jTuKz;m370Gn#x!Dhjyd^cdzvJ_aB?~eX6j+ zdvfryjg104NrZLpAH&B|Y#{DMhRbdEm5Aze=sk&H(OrzGG{#TL8#PaJS`?*1)uVtY zaP)cPf5Np1DEtSgRiVk-`nM_VG)$hEjm$8t@K$|h z^572?q91f_t2FRnNJT|(34f%Q-~R5M2|V4iKJHt8ed1{Z{7HmnUcFL0JuSd8OH{H$ z;Rm7Ql`AvoTLz0SToLDJn9;U;J7LI`>63gRPIKpkNX?D?skeFDBdsh6b0E&bz zas5ls7yAmmimYDZ!!b2I*}N<=MWyt+5swGL_p7TDt&&NPi*IWTD_>@ei4Hjy$w(tE z9n0hRCe}`j-u=+)fo9*fm0G=)tA^jkeYGk>L&%5KBCb}A;k1I1=!@_C!N<$WaTOHT z*;(uc_HXxvsL$sRnnK+51m(v|4&B}HcE@|EJdK6=zwPztJZm6f8azsVtZnv|3&EyM zoTs>t)|&p1r3u+Y#PpiIwOGaN)WSkIqCT{?{>Cr=gVj|)yT|)O(C{e||AGq! zj2f??+rL=ay*17khuOS#t_)i37IA4SwEcHQB!)ki(tzuc`1L5Bl3qmrG@XjVEw7E1 z;*Z-9tSKk;8i^9Vaj=Jz(;tY+u5O|c@HM)O8&iE$Bh$Qgs=6ONHE$GK(YtTeUpA8+ zi^HTFUt~uS0#!sNSkx1a+_MX4dMB-=$`L+P=jR1v()hAJjVb9wIqK`Yhk593jf&p6 zN1AbV2bA^X10PqO1L`_ zCg*^WeOkT)-6*G()dNKCV$jiT*uhQueIG$u@pGHF+?t-jo%0p}73Jl9?ZU^WY4aXu z;wqq&I_vUFM%jh?a|)9>*A3=(n9Y-`{6+*`r)#>K-{{gp#=MPm%Xj#>$X}d_6w93! zaXP}mb(=JRoSW+R5sl6DtPIGzgkHv+8@JQ!J<2g$r=Mn=8}sI7eaInVT2qDT_=r_p zUZAW~lTfrV!Fu*s>CjattE@+jwxl1};%CdP@1-O>nxG8~|30tna8ZS-J15g}FfZul z^I`r$UbgGS5;wL;E=f3Px2i_m@m^~0KB(+hSn=LAXUaY+V3uvn$UWf$*Ra?Uw^QjJ znP(44ukHywFVo@Vv`5wlCK)g_DT|ahiOfcJ_E*e0hHa`mho#+mKB*V3I0%|?hHor* z)n7PshKw(ES+(V=Bm@0HLg`}j%LJ5+yltg*ZeA$!C35%RKCIZmJJ4B!x|i@0XXLEk zCD`|(C(k=1ODS>mgX;LTS#IOk1@2m`UR68pyuWc@L+R4d`warhNiM>X(IHBWu5Zya zp+8=!wuDOvt5CiZMfc#vs?zLivZw<+ZOo;g8miSEbU91}?~RW7UH*#4Okq5pxv;;> zhHk*_V~6E--qa!fkW22nEO7-B#DEJ=#TL){Z2qXku_m86pxOCzk6=IDW2hbu`tIU= z|0-+1=JDOfbrN-~>4!C$=)&XFl37kuW?4Nn)ToT}JWl#R@y9+FnjU|FVyAZw1r$o+ zydSfKgKtI;OoT^9Lbi-+CMB%(l)J85-VZNx93D{>Y*?||ldDkPE&TL#Zp^We$lElM zlD@BcM>B+ILhqm4<+2->;N%R?xi^WSlMUI#(l_=Q3&Ne{=A5imO#XB*Zc@ak2Y>19 zR-Iwt$@UEzke=mAt)XZ!JF|oB*jY7RVUC6zI(fbQ^GOAF#xq!E$-d~`D^C>vK~aj6 zVvfb|=bOehn(EF zu4(V^&!PE;^6G=GdjYGzy`( zhVO9q**@nabGBk1;F@Y2rhahKqN!nr#8+=49bw~Bbx)%BPr;N-9Rl*}?I%J3AMUly z$`{gxu(6A}d{Wrao}fizNa^k&noHMBsHD3TBQN_mJhj&9YuA+IpaWOwo3>uNYIfF=HHD}*mS z?uodV2s6^8Zd%ba?|127@sGEDXv7-+D)=O|noMBFfGvkcu1)cnK2K3daEcXYW-`q< zd7Zysz}~Vw2j~;dQhaamyxV)=BKGm-XdShV={)uF_+P@|IiJgdmTozPjJ4Xa7L^l>&@tBW)6A!_A=+n*0S2d zrs>z(iK-7Y6BnYD<*1EV1NEt`D1y%wT8?SY-VItiGIr3oN}!WY{F2qi&HQYyuJpGL zLxTDp9`FUw-zij0YY1pa)8v@`walG*>-q(`b#EcN3)NqiYO_Qye-$g)Cuj6AVMfRz z!`3)~Mi27t22?_TzH00F1A4{kc`tYSb-+OG{c_Nv#Xk2Tvbn!d=6@b<0IX zr2WerciVTYMCu&5!1vm@WO#YF-=kb1_RwN^c>LgivIuYb#llg>^5)RD$Gj`TrS2yU z|9<>URU*6M&o}Ri+vPKF^e;-S95`^VjX7Cl|0%NtT7mrr0&VB|eM<%MX!h(ZFA8q! zk$ZfaEJ7e!)mYtzGnx1PIYX&|(>Wh!_f6+M51!Sxeo-f9R#YA*{SEinacNUH*lGVh z;NO0}^7oOqQpOx}5^+yGRFqUJxy5^%sjPUKYU08ke_HOju{T7nt9C)DTIe(R3qR8X zZmTv+r^NT_h-rs(tIQkpab0MfB&A>+E3vG+SrXoP<|fbCbA?8#pMR3uaye}{fD|$5 zF3N!N<^iy5q+~<+7!^fp5il7#?6mZF`p-^o#(s%`?)n+QAWyJ zQnjsB+wY$y3`c2vU(PH*=Zp_Nv;L*ei~fUNRd*>lCF)fZh5n>^1^jtaUb5e``y1Z{ zzuGvze_LB~9P2i@Yl-`XKR$gt=7D>?zA$9J^1GDps`%mbrcS5(xqOkSt0(W9m6j?! zPIQn+;83b|uzmWe$va!t=Z@ht-==BCE1hpwE$kNp2zsRqKAgwj9>1~hSvvMsS}q1u zfCb^V8cij0NeHH_(+L+`_@;PXZZayUO)Q(AoF%OpuF7cf@S#xao;_MJc|^{&|88Pc z91lU6iBC3C{gH;^q(fv}{%Y(Y_h6kxH{abIqOE2{Fd`we_S1nTT&;SJ;&Ao%siX%V z1@p^Nd0s9CKA4d4;EB696m#b6h>PflRq38p9@7)ATfV(EA9DEkP;s)=1322!#d)>Zq!S3Je5NvHRBPJt&b+`-ey4Al5f9toetzF ziE}<5JMfi{+rzm$x$!_eO~fIe)eOg8V;=Ri!Ql6|<@I9izIfToJf-b0U!T33=jrqx zJu37;^uiLJv_HkQrVW3pb=6TCRh8V_quKQ#M!w8!L&j&)<@MLEYI%n>*;V*PWsmMX z=!{;XObkBzs}6jh&Fpe@7K~|PC|5waoVT0GXttydy)E&x%XzoVQG@>usPpl*Id{6q z?wPLB!YW7pNTh<(sW+3A9$&U=b(Xqt_HEJI#n$(%YtMB0HK^ZqJ=~M8e&P53 z1fUVfeLgBH3I9)cU29J6Yb)jb|MMyG1^+kRjNrE0ZIW+GtzqZSst1>DMSLWNomnJJ z4A%wn1)O6LAde-n?LV%>9K&jEWvm+6_WN&tRmC1^ADxp2y8Cw&{dYE6{H9^!HJzf| zL6aO)_1Nf#tvgjCo8tHFbK?nBF{TdrztMS({~LoAlHx_K;$rr{VP^tyGe_oU6V#wI zj64RdgGzi!9J$8Zeb!?+6}$(RsegK?cC%35K`z+|ffJ1$B>xi>7iRf?GSpP_`VY4d wRL>^=pWwVO%V*60|H-h*{_meBi~eqt4yB#ar;~15B*BNay55PWs+J-D57(DVY5)KL literal 0 HcmV?d00001 diff --git a/src/assets/cli/tui-agents-tab-bar.png b/src/assets/cli/tui-agents-tab-bar.png deleted file mode 100644 index d3c3660e241a093e5f15d8f6820dee66b2599ae1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58667 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 xg^Jhk3z8h*;;0L`MWX#?z+A-k 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. See [managing conversations in the CLI](/cli/agent-conversations/#managing-conversations) to learn more about conversation history and resume details. +You can also open a conversation directly at startup with `warp --resume `. See [managing conversations in the CLI](/agents/cli/agent-conversations/#managing-conversations) to learn more about conversation history and resume details. ## Multi-agent orchestration @@ -65,7 +65,7 @@ You can also shape the configuration in your prompt. For example, ask for a spec When the agent decides to spawn child agents, the CLI shows an approval card titled **Can I start additional agents for this task?** that summarizes the agents it wants to launch and the run-wide configuration. -By default, no child agents launch until you approve. The **Run orchestrated agents** permission in your profile controls this: **Always allow** skips the approval card, and **Never** blocks child agents entirely. See [Permissions and profiles](/cli/permissions-and-profiles/). +By default, no child agents launch until you approve. The **Run orchestrated agents** permission in your profile controls this: **Always allow** skips the approval card, and **Never** blocks child agents entirely. See [Permissions and profiles](/agents/cli/permissions-and-profiles/). From the approval card: @@ -75,8 +75,8 @@ From the approval card: After launch, a tab bar labeled **Agents:** appears above the session with one tab for the orchestrator and one tab per child agent. Messages between the parent and child agents appear in each agent's transcript. -

-![The Agents: tab bar in the Warp Agent CLI, showing the orchestrator tab and three child agent tabs with status glyphs](../../../assets/cli/tui-agents-tab-bar.png) +
+![The Agents: tab bar in the Warp Agent CLI, showing the orchestrator tab and three child agent tabs with status glyphs](../../../../assets/agents/cli/tui-agents-tab-bar.png)
The Agents: tab bar with one child agent running and two finished.
@@ -116,5 +116,5 @@ In the orchestrator's own session, `Ctrl+C` keeps its usual behavior. * [Handoff from local to cloud](/platform/handoff/local-to-cloud/) - Prerequisites, the Warp app flow, and troubleshooting. * [Multi-agent orchestration](/platform/orchestration/) - The parent/child model, run states, and orchestration patterns. * [Viewing cloud agent runs](/platform/viewing-cloud-agent-runs/) - Open, inspect, and continue cloud runs in the {VARS.WEB_APP}. -* [Agent conversations in the CLI](/cli/agent-conversations/#managing-conversations) - Conversation history, `/conversations`, and `--resume`. +* [Agent conversations in the CLI](/agents/cli/agent-conversations/#managing-conversations) - Conversation history, `/conversations`, and `--resume`. * [Environments](/platform/environments/) - Configure the repos, image, and setup commands cloud agents run with. diff --git a/src/content/docs/cli/configuration.mdx b/src/content/docs/agents/cli/configuration.mdx similarity index 98% rename from src/content/docs/cli/configuration.mdx rename to src/content/docs/agents/cli/configuration.mdx index 41505cec..e279316a 100644 --- a/src/content/docs/cli/configuration.mdx +++ b/src/content/docs/agents/cli/configuration.mdx @@ -67,8 +67,8 @@ In auto mode, detection runs at startup, so if you switch your terminal's colors The statusline is the row below the CLI's input box that shows session information at a glance. By default it shows the auto-approve indicator, the active model, the working directory, the Git branch, and the Git diff status inside a repository, plus the Vim mode indicator when Vim mode is on. You can enable any of these items: -
-![The Warp Agent CLI statusline showing the auto-approve, model, working directory, Git branch status, Git diff status, credit usage, context window usage, and agent to-do list chips](../../../assets/cli/tui-statusline.png) +
+![The Warp Agent CLI statusline showing the auto-approve, model, working directory, Git branch status, Git diff status, credit usage, context window usage, and agent to-do list chips](../../../../assets/agents/cli/tui-statusline.png)
The statusline with credit usage, context window usage, and task list chips enabled.
@@ -159,4 +159,4 @@ Press `Enter` on a server to start, stop, or retry it depending on its state. Fa * [Skills](/agents/capabilities/skills/) - Authoring skills, skill arguments, and skill locations. * [MCP servers](/agents/capabilities/mcp/) - Config format, server examples, and authentication. * [Codebase Context](/agents/capabilities/codebase-context/) - Codebase indexing in the Warp app. -* [{VARS.WARP_CLI} reference](/cli/reference/) - Command-line flags, slash commands, and keyboard shortcuts. +* [{VARS.WARP_CLI} reference](/agents/cli/reference/) - Command-line flags, slash commands, and keyboard shortcuts. diff --git a/src/content/docs/cli/index.mdx b/src/content/docs/agents/cli/index.mdx similarity index 60% rename from src/content/docs/cli/index.mdx rename to src/content/docs/agents/cli/index.mdx index b79aef13..9e0a36d1 100644 --- a/src/content/docs/cli/index.mdx +++ b/src/content/docs/agents/cli/index.mdx @@ -14,23 +14,23 @@ The {VARS.WARP_CLI} is a standalone terminal program that runs [Warp Agent](/pla The CLI is also a native terminal multiplexer. It creates and maintains its own pseudoterminal (PTY), which lets you and the agent execute commands and interact with running processes through the same terminal, including prompts and full-screen terminal apps. Because it's a regular command-line program, it works in any terminal emulator, including over SSH. -To get a working setup in a few minutes, follow the [quickstart](/cli/quickstart/). +To get a working setup in a few minutes, follow the [quickstart](/agents/cli/quickstart/). ## Key features -* **[Agent conversations](/cli/agent-conversations/)** - Follow the agent's work in a scrollable transcript with streamed responses, Markdown formatting, file-edit diffs, tool calls, plans, and task lists. -* **[Shell commands](/cli/input-and-shell-commands/#shell-mode)** - Run shell commands from the same input you use to prompt the agent, including long-running and interactive ones. -* **[Permissions and profiles](/cli/permissions-and-profiles/)** - Approve commands and file edits from inline request cards, or configure execution profiles and auto-approve. -* **[Persistent conversations](/cli/agent-conversations/#managing-conversations)** - Conversations save to your Warp account, so you can exit and resume later or switch between them. -* **[Cloud handoff and orchestration](/cli/cloud-and-orchestration/)** - Hand off a conversation to a cloud agent, continue cloud runs in the CLI, and coordinate multiple agents. -* **[Project context](/cli/configuration/#project-context-and-rules)** - The agent automatically picks up your project's rules (like `AGENTS.md`), skills, and MCP servers. -* **[Model choice](/cli/models-and-usage/)** - Pick a model per conversation, bring your own provider API keys, and track credit usage. -* **[Customization](/cli/configuration/)** - Configure themes, the statusline, and the start screen through a local settings file. +* **[Agent conversations](/agents/cli/agent-conversations/)** - Follow the agent's work in a scrollable transcript with streamed responses, Markdown formatting, file-edit diffs, tool calls, plans, and task lists. +* **[Shell commands](/agents/cli/input-and-shell-commands/#shell-mode)** - Run shell commands from the same input you use to prompt the agent, including long-running and interactive ones. +* **[Permissions and profiles](/agents/cli/permissions-and-profiles/)** - Approve commands and file edits from inline request cards, or configure execution profiles and auto-approve. +* **[Persistent conversations](/agents/cli/agent-conversations/#managing-conversations)** - Conversations save to your Warp account, so you can exit and resume later or switch between them. +* **[Cloud handoff and orchestration](/agents/cli/cloud-and-orchestration/)** - Hand off a conversation to a cloud agent, continue cloud runs in the CLI, and coordinate multiple agents. +* **[Project context](/agents/cli/configuration/#project-context-and-rules)** - The agent automatically picks up your project's rules (like `AGENTS.md`), skills, and MCP servers. +* **[Model choice](/agents/cli/models-and-usage/)** - Pick a model per conversation, bring your own provider API keys, and track credit usage. +* **[Customization](/agents/cli/configuration/)** - Configure themes, the statusline, and the start screen through a local settings file. ## How it relates to the Warp app and Oz * **The Warp app** - The CLI runs the same [Warp Agent](/platform/harnesses/warp-agent/) harness as the Warp app, so your account, plan, model access, rules, and skills work the same in both. The CLI doesn't require the Warp app to be installed. -* **{VARS.WARP_AUTOMATION_PLATFORM}** - {VARS.WARP_AUTOMATION_PLATFORM} is Warp's programmable platform for running and coordinating agents at scale. The CLI connects to the same platform. Conversations sync to your Warp account, and you can hand work off to [cloud agents](/cli/cloud-and-orchestration/) or continue a cloud run from your terminal. +* **{VARS.WARP_AUTOMATION_PLATFORM}** - {VARS.WARP_AUTOMATION_PLATFORM} is Warp's programmable platform for running and coordinating agents at scale. The CLI connects to the same platform. Conversations sync to your Warp account, and you can hand work off to [cloud agents](/agents/cli/cloud-and-orchestration/) or continue a cloud run from your terminal. ## Supported platforms @@ -44,15 +44,15 @@ The CLI runs on: You sign in once, and the CLI stays signed in across sessions. -* **Sign in through your browser** - The first time you run `warp`, the CLI shows a verification link and code and opens the link in your browser. It unlocks automatically once you approve the login. See [logging in](/cli/quickstart/#2-log-in) for the full walkthrough. -* **Sign in with an API key** - In non-interactive environments such as CI, authenticate with a Warp API key through the `WARP_API_KEY` environment variable or the `--api-key` flag. See [command-line flags](/cli/reference/#command-line-flags). +* **Sign in through your browser** - The first time you run `warp`, the CLI shows a verification link and code and opens the link in your browser. It unlocks automatically once you approve the login. See [logging in](/agents/cli/quickstart/#2-log-in) for the full walkthrough. +* **Sign in with an API key** - In non-interactive environments such as CI, authenticate with a Warp API key through the `WARP_API_KEY` environment variable or the `--api-key` flag. See [command-line flags](/agents/cli/reference/#command-line-flags). * **Sign out** - Run `/logout`. The CLI returns to its login screen and opens Warp's web sign-out page, so your browser session is signed out too. ## Automatic updates The CLI updates automatically. While it runs, it periodically checks for a newer version, downloads it in the background, and stages it without interrupting your session. The staged version takes effect the next time you launch `warp`. When an update is ready, the start screen shows an "update installed, restart to apply" notice next to the version. -To turn off background updates, set `general.autoupdate_enabled` to `false` in the [settings file](/cli/configuration/#the-settings-file). To turn them off for a single launch, set the `WARP_TUI_DISABLE_AUTOUPDATE` environment variable to any value. +To turn off background updates, set `general.autoupdate_enabled` to `false` in the [settings file](/agents/cli/configuration/#the-settings-file). To turn them off for a single launch, set the `WARP_TUI_DISABLE_AUTOUPDATE` environment variable to any value. ## Coming from the Warp app @@ -60,8 +60,8 @@ If you already use the Warp app, most of your setup carries over. Rules and skil ## Next steps -* [Quickstart](/cli/quickstart/) - Install the CLI, log in, and run your first prompt. -* [Agent conversations](/cli/agent-conversations/) - Learn how the transcript, diffs, and approvals work. -* [Input and shell commands](/cli/input-and-shell-commands/) - Compose prompts and run shell commands from the same input. -* [Configuration](/cli/configuration/) - Customize the CLI with the settings file. -* [Reference](/cli/reference/) - Flags, slash commands, and keyboard shortcuts. +* [Quickstart](/agents/cli/quickstart/) - Install the CLI, log in, and run your first prompt. +* [Agent conversations](/agents/cli/agent-conversations/) - Learn how the transcript, diffs, and approvals work. +* [Input and shell commands](/agents/cli/input-and-shell-commands/) - Compose prompts and run shell commands from the same input. +* [Configuration](/agents/cli/configuration/) - Customize the CLI with the settings file. +* [Reference](/agents/cli/reference/) - Flags, slash commands, and keyboard shortcuts. diff --git a/src/content/docs/cli/input-and-shell-commands.mdx b/src/content/docs/agents/cli/input-and-shell-commands.mdx similarity index 92% rename from src/content/docs/cli/input-and-shell-commands.mdx rename to src/content/docs/agents/cli/input-and-shell-commands.mdx index fbecc41a..6587fc4b 100644 --- a/src/content/docs/cli/input-and-shell-commands.mdx +++ b/src/content/docs/agents/cli/input-and-shell-commands.mdx @@ -7,7 +7,7 @@ description: >- --- import { VARS } from '@data/vars'; -The {VARS.WARP_CLI} is a full terminal as well as an agent. Every session runs a real shell, so you can run commands in the same place you prompt the agent. The input is a multiline editor that combines readline-style editing with inline menus for slash commands, history, and completions, plus mouse support, image attachments, and voice input. For the complete list of flags, slash commands, and keyboard shortcuts, see the [{VARS.WARP_CLI} reference](/cli/reference/). +The {VARS.WARP_CLI} is a full terminal as well as an agent. Every session runs a real shell, so you can run commands in the same place you prompt the agent. The input is a multiline editor that combines readline-style editing with inline menus for slash commands, history, and completions, plus mouse support, image attachments, and voice input. For the complete list of flags, slash commands, and keyboard shortcuts, see the [{VARS.WARP_CLI} reference](/agents/cli/reference/). ## Editing basics @@ -17,7 +17,7 @@ The input is a multiline editor. * **Edit with readline-style keys** - The editor supports familiar bindings such as `Ctrl+A` and `Ctrl+E` (start and end of line), `Ctrl+W` (delete the previous word), `Ctrl+K` and `Ctrl+U` (delete to the end or start of the line), `Ctrl+Y` (reinsert the last deleted text), and `Ctrl+Z` (undo). * **Use macOS Command shortcuts** - When the Kitty keyboard protocol is enabled in your terminal, the editor supports Command-modified shortcuts such as `⌘+X` to cut and `⌘+Shift+←` or `⌘+Shift+→` to extend the selection. -The full editing and selection table is in the [keyboard shortcuts reference](/cli/reference/#keyboard-shortcuts). +The full editing and selection table is in the [keyboard shortcuts reference](/agents/cli/reference/#keyboard-shortcuts). :::note Core `Ctrl` and `Alt` bindings are cross-platform. Shortcuts that use `Alt` require some macOS terminals' Option-as-Alt (Meta) setting. Command-modified shortcuts require a terminal with the Kitty keyboard protocol enabled. @@ -29,9 +29,9 @@ Type `/` at the start of an empty input to open the slash command menu. Entries When a command takes an argument, the input shows a ghost-text argument hint after the full command name, for example `/theme `. -Your [skills](/cli/configuration/#skills) also appear in the slash command menu, so you can invoke a skill by typing `/` followed by its name. +Your [skills](/agents/cli/configuration/#skills) also appear in the slash command menu, so you can invoke a skill by typing `/` followed by its name. -The [slash commands reference](/cli/reference/#slash-commands) lists every command. +The [slash commands reference](/agents/cli/reference/#slash-commands) lists every command. ## Input history @@ -51,7 +51,7 @@ In [shell mode](#shell-mode), press `Tab` to complete the command you're typing, ## Selection and clipboard -* **Highlight to copy** - Finishing a mouse selection in the input or the [conversation transcript](/cli/agent-conversations/) automatically copies it. +* **Highlight to copy** - Finishing a mouse selection in the input or the [conversation transcript](/agents/cli/agent-conversations/) automatically copies it. * **Keyboard selection** - Extend the selection with `Shift` plus the arrow keys, or select everything with `Ctrl+Shift+A`. Copy with `Ctrl+Shift+C` and cut with `Ctrl+X`. * **Paste** - Press `Ctrl+V` or `Ctrl+Shift+V` (also `Alt+V` on Windows). Your terminal's own paste shortcut works as well. * **Click controls** - Interactive elements such as the **Voice** footer entry and the attachment bar controls respond to clicks. @@ -149,9 +149,9 @@ There are two other ways to exit: * **`Ctrl+D`** - Exits immediately when the input is empty. * **`/exit`** - Exits from the slash command menu. -When you exit, the CLI prints a command you can use to pick the conversation back up later. See [Managing conversations](/cli/agent-conversations/#managing-conversations) for resuming and switching conversations. +When you exit, the CLI prints a command you can use to pick the conversation back up later. See [Managing conversations](/agents/cli/agent-conversations/#managing-conversations) for resuming and switching conversations. ## Related pages -* [{VARS.WARP_CLI} reference](/cli/reference/) - Flags, environment variables, slash commands, and keyboard shortcuts. -* [Agent conversations in the {VARS.WARP_CLI}](/cli/agent-conversations/) - The transcript, tool calls, diffs, and managing conversations. +* [{VARS.WARP_CLI} reference](/agents/cli/reference/) - Flags, environment variables, slash commands, and keyboard shortcuts. +* [Agent conversations in the {VARS.WARP_CLI}](/agents/cli/agent-conversations/) - The transcript, tool calls, diffs, and managing conversations. diff --git a/src/content/docs/cli/models-and-usage.mdx b/src/content/docs/agents/cli/models-and-usage.mdx similarity index 82% rename from src/content/docs/cli/models-and-usage.mdx rename to src/content/docs/agents/cli/models-and-usage.mdx index 6e26ff81..78838eef 100644 --- a/src/content/docs/cli/models-and-usage.mdx +++ b/src/content/docs/agents/cli/models-and-usage.mdx @@ -10,11 +10,11 @@ The {VARS.WARP_CLI} gives you the same model options as the Warp app. You can pi ## Choosing a model -Run `/model` to open the model picker. You can also click the model name in the [statusline](/cli/configuration/#statusline) to open the same picker. +Run `/model` to open the model picker. You can also click the model name in the [statusline](/agents/cli/configuration/#statusline) to open the same picker. Models that your plan or your team's settings don't allow appear disabled in the picker. -Your choice is saved as the base model of your active profile, so it persists across sessions. See [permissions and profiles](/cli/permissions-and-profiles/) for how profiles work in the CLI. For the full list of supported models and to learn more about how Warp's Auto models pick for you, see [Model choice](/agents/inference/model-choice/). +Your choice is saved as the base model of your active profile, so it persists across sessions. See [permissions and profiles](/agents/cli/permissions-and-profiles/) for how profiles work in the CLI. For the full list of supported models and to learn more about how Warp's Auto models pick for you, see [Model choice](/agents/inference/model-choice/). ## Bring your own API key @@ -27,7 +27,7 @@ Run `/api-keys` to open the key management menu. It lists each provider with its * **Connect X Premium or SuperGrok** - Press `Enter` on the subscription row and the CLI opens your browser to sign in to your xAI account. `Ctrl+X` disconnects it. * **Warp credit fallback** - Press `Enter` to toggle whether a request that fails through your key is retried with Warp credits. See [failover and fallback behavior](/agents/inference/bring-your-own-api-key/#failover-and-fallback-behavior). -You can also store or clear keys outside a session with the `--set-provider-api-key` and `--clear-provider-api-key` flags. See the [{VARS.WARP_CLI} reference](/cli/reference/#command-line-flags). X Premium/SuperGrok connections can only be managed through `/api-keys`. +You can also store or clear keys outside a session with the `--set-provider-api-key` and `--clear-provider-api-key` flags. See the [{VARS.WARP_CLI} reference](/agents/cli/reference/#command-line-flags). X Premium/SuperGrok connections can only be managed through `/api-keys`. :::note Warp's built-in Auto models always consume Warp credits, even with BYOK configured. To bill through your own account, select a specific provider model, or use a [custom router](/agents/inference/custom-routers/#using-your-own-api-keys-byok) whose targets your keys cover. See [BYOK usage and billing behavior](/agents/inference/bring-your-own-api-key/#byok-usage-and-billing-behavior) for the full rules. @@ -43,7 +43,7 @@ The CLI loads the same router definitions as the Warp app. These are YAML files The CLI shows usage at two levels: -* **Conversation total** - Once a conversation has reported any usage, the [statusline](/cli/configuration/#statusline) shows its accumulated credits (e.g., `2.5 credits`). Click the entry to switch between credits and the equivalent provider cost in dollars. Your choice persists across sessions. +* **Conversation total** - Once a conversation has reported any usage, the [statusline](/agents/cli/configuration/#statusline) shows its accumulated credits (e.g., `2.5 credits`). Click the entry to switch between credits and the equivalent provider cost in dollars. Your choice persists across sessions. * **Per-response details** - Run `/cost` to toggle a summary row under the latest response showing how long it took and how many credits it spent (e.g., `12s • 1.2 credits`). The summary appears once the response finishes. Credits are Warp's unit of usage for agent requests. For what credits cover and how plans differ, see [Credits](/support-and-community/plans-and-billing/credits/). @@ -54,4 +54,4 @@ Credits are Warp's unit of usage for agent requests. For what credits cover and * [Bring Your Own API Key](/agents/inference/bring-your-own-api-key/) - How BYOK works, key storage, and billing behavior. * [SuperGrok subscription](/agents/inference/grok-subscription/) - Use Grok models through your xAI account. * [Custom routers](/agents/inference/custom-routers/) - Define routing logic that picks a model per task. -* [{VARS.WARP_CLI} reference](/cli/reference/) - Flags and slash commands, including the API key commands. +* [{VARS.WARP_CLI} reference](/agents/cli/reference/) - Flags and slash commands, including the API key commands. diff --git a/src/content/docs/cli/permissions-and-profiles.mdx b/src/content/docs/agents/cli/permissions-and-profiles.mdx similarity index 91% rename from src/content/docs/cli/permissions-and-profiles.mdx rename to src/content/docs/agents/cli/permissions-and-profiles.mdx index 6dd3d6c9..a394b605 100644 --- a/src/content/docs/cli/permissions-and-profiles.mdx +++ b/src/content/docs/agents/cli/permissions-and-profiles.mdx @@ -38,7 +38,7 @@ Auto-approve is scoped to a single conversation, and new conversations start wit With auto-approve on, the agent runs commands and applies file edits without review, including commands that match your own command denylist. Press `Ctrl+C` to stop the agent if it starts doing something you didn't intend. ::: -To keep your denylist in force while auto-approve is on, turn off the bypass in your [settings file](/cli/configuration/#the-settings-file): +To keep your denylist in force while auto-approve is on, turn off the bypass in your [settings file](/agents/cli/configuration/#the-settings-file): ```toml title="settings.toml" [agents.warp_agent.other] @@ -49,7 +49,7 @@ Denylist rules enforced by your team in the [Admin Panel](/enterprise/team-manag ## Execution profiles -The CLI reads its permissions from execution profiles stored in its [settings file](/cli/configuration/). Profiles live under the `agents.execution_profiles` table, and the CLI always runs with the profile under the reserved `default` key: +The CLI reads its permissions from execution profiles stored in its [settings file](/agents/cli/configuration/). Profiles live under the `agents.execution_profiles` table, and the CLI always runs with the profile under the reserved `default` key: ```toml title="settings.toml" [agents.execution_profiles.default] @@ -89,7 +89,7 @@ Most permission fields accept one of three values: * **`command_denylist`** - Regular expressions for commands that require approval regardless of the other permission values. [Auto-approve bypasses this list by default](#auto-approve). * **`directory_allowlist`** - Directories the agent may read without approval. -Profiles also hold model overrides such as `base_model`, covered in [Models and usage in the {VARS.WARP_CLI}](/cli/models-and-usage/). +Profiles also hold model overrides such as `base_model`, covered in [Models and usage in the {VARS.WARP_CLI}](/agents/cli/models-and-usage/). :::note The profile collection is validated as a whole. If any profile contains an invalid value, the CLI keeps the last valid configuration while it's running and falls back to the built-in default profile on the next launch, until the file is fixed. @@ -98,5 +98,5 @@ The profile collection is validated as a whole. If any profile contains an inval ## Related pages * [Profiles & Permissions](/agents/capabilities/agent-profiles-permissions/) - The full permission model, autonomy levels, and allowlist/denylist behavior. -* [Configuring the {VARS.WARP_CLI}](/cli/configuration/) - The settings file, themes, statusline, and start screen. -* [Agent conversations in the {VARS.WARP_CLI}](/cli/agent-conversations/) - How tool calls, diffs, and agent questions render in the transcript. +* [Configuring the {VARS.WARP_CLI}](/agents/cli/configuration/) - The settings file, themes, statusline, and start screen. +* [Agent conversations in the {VARS.WARP_CLI}](/agents/cli/agent-conversations/) - How tool calls, diffs, and agent questions render in the transcript. diff --git a/src/content/docs/cli/quickstart.mdx b/src/content/docs/agents/cli/quickstart.mdx similarity index 82% rename from src/content/docs/cli/quickstart.mdx rename to src/content/docs/agents/cli/quickstart.mdx index 7da904cb..902d65f1 100644 --- a/src/content/docs/cli/quickstart.mdx +++ b/src/content/docs/agents/cli/quickstart.mdx @@ -12,7 +12,7 @@ This guide takes you from installing the {VARS.WARP_CLI} to your first agent con ## Prerequisites * **A Warp account** - The login step opens your browser, where you can sign in or [create an account](https://app.warp.dev/signup). The CLI uses the same account as the Warp app, but doesn't require the app to be installed. -* **A supported platform** - macOS, Linux, or Windows. See [supported platforms](/cli/#supported-platforms). +* **A supported platform** - macOS, Linux, or Windows. See [supported platforms](/agents/cli/#supported-platforms). ## 1. Install the Warp Agent CLI @@ -39,7 +39,7 @@ After installing, verify that the `warp` command is available: warp --version ``` -The command prints the installed version. From here on, the CLI updates automatically. See [automatic updates](/cli/#automatic-updates). +The command prints the installed version. From here on, the CLI updates automatically. See [automatic updates](/agents/cli/#automatic-updates). ## 2. Log in @@ -69,7 +69,7 @@ Type a prompt in plain language, such as `What does this project do?`, and press If the agent wants to run a command or edit a file, it shows a permission request. Choose an option to approve or reject the action. -Learn more about the transcript, diffs, and approvals in [Agent conversations](/cli/agent-conversations/) and [Permissions and profiles](/cli/permissions-and-profiles/). +Learn more about the transcript, diffs, and approvals in [Agent conversations](/agents/cli/agent-conversations/) and [Permissions and profiles](/agents/cli/permissions-and-profiles/). ## 4. Run a shell command @@ -79,7 +79,7 @@ Type `!` at the start of an empty input to switch to shell mode. The footer show To run recognized shell commands without the `!` prefix, run `/natural-language-detection` to turn on natural language detection. The CLI then classifies input as you type: recognized commands switch to shell mode, while natural-language prompts stay in agent mode. The prompt marker and statusline show the active mode before you press `Enter`. -See [Input and shell commands](/cli/input-and-shell-commands/) for long-running commands, interactive programs, and full-screen apps. +See [Input and shell commands](/agents/cli/input-and-shell-commands/) for long-running commands, interactive programs, and full-screen apps. ## 5. Exit and resume @@ -93,10 +93,10 @@ warp --resume CONVERSATION_TOKEN Run the printed command later to pick up where you left off. -To browse and reopen past conversations from inside the CLI, see [Agent conversations](/cli/agent-conversations/#conversation-history). +To browse and reopen past conversations from inside the CLI, see [Agent conversations](/agents/cli/agent-conversations/#conversation-history). ## Next steps -* [Agent conversations](/cli/agent-conversations/) - Work with the transcript, code diffs, plans, and tasks. -* [Customizing the CLI](/cli/configuration/) - Rules, skills, MCP servers, themes, and settings. -* [Reference](/cli/reference/) - All flags, slash commands, and keyboard shortcuts. +* [Agent conversations](/agents/cli/agent-conversations/) - Work with the transcript, code diffs, plans, and tasks. +* [Customizing the CLI](/agents/cli/configuration/) - Rules, skills, MCP servers, themes, and settings. +* [Reference](/agents/cli/reference/) - All flags, slash commands, and keyboard shortcuts. diff --git a/src/content/docs/cli/reference.mdx b/src/content/docs/agents/cli/reference.mdx similarity index 92% rename from src/content/docs/cli/reference.mdx rename to src/content/docs/agents/cli/reference.mdx index 6625ffb5..0a5d6dea 100644 --- a/src/content/docs/cli/reference.mdx +++ b/src/content/docs/agents/cli/reference.mdx @@ -42,7 +42,7 @@ Starts new conversations with auto-approve enabled, so the agent runs actions wi warp --auto-approve ``` -This flag applies only to the session you launch with it and doesn't change your saved settings. You can still toggle auto-approve per conversation with `/auto-approve` or `Ctrl+Shift+I`. See [permissions and profiles](/cli/permissions-and-profiles/) for how approvals work. +This flag applies only to the session you launch with it and doesn't change your saved settings. You can still toggle auto-approve per conversation with `/auto-approve` or `Ctrl+Shift+I`. See [permissions and profiles](/agents/cli/permissions-and-profiles/) for how approvals work. ### `--clear-provider-api-key` @@ -74,7 +74,7 @@ Reopens a previous conversation from your shell as the CLI starts. warp --resume CONVERSATION_TOKEN ``` -`CONVERSATION_TOKEN` is the token the CLI prints when you exit a session ("To continue this conversation, run: `warp --resume ...`"). You can also reopen past conversations from inside a session with `/conversations`. See [agent conversations in the CLI](/cli/agent-conversations/#managing-conversations) for how persistence and resuming work. +`CONVERSATION_TOKEN` is the token the CLI prints when you exit a session ("To continue this conversation, run: `warp --resume ...`"). You can also reopen past conversations from inside a session with `/conversations`. See [agent conversations in the CLI](/agents/cli/agent-conversations/#managing-conversations) for how persistence and resuming work. ### `--set-provider-api-key` @@ -98,7 +98,7 @@ your-secret-manager read anthropic-api-key | warp --set-provider-api-key anthrop Avoid staging keys in plaintext files. If you must use a temporary file, delete it immediately afterward. -Inside a session, manage the same keys with the `/api-keys` menu. See [models and usage](/cli/models-and-usage/#bring-your-own-api-key) for how stored keys affect billing. +Inside a session, manage the same keys with the `/api-keys` menu. See [models and usage](/agents/cli/models-and-usage/#bring-your-own-api-key) for how stored keys affect billing. ### `--version` @@ -144,14 +144,14 @@ Type `/` at the start of the input to open the slash command menu. Commands that | `/view-logs` | | Bundle your logs into a zip archive | | `/voice` | | Start voice input | -Skills also appear in the same menu under their own names, so you can invoke a skill directly as `/skill-name`. [Customizing the CLI](/cli/configuration/) covers how skills are discovered. +Skills also appear in the same menu under their own names, so you can invoke a skill directly as `/skill-name`. [Customizing the CLI](/agents/cli/configuration/) covers how skills are discovered. ## Keyboard shortcuts Press `?` on an empty input to open the contextual shortcuts panel inside the CLI. The tables below list the default bindings. :::note -Bindings are the same on macOS, Linux, and Windows, except that Windows also accepts `Alt+V` for paste. For shortcuts that use `Alt`, some macOS terminals deliver `Option` as `Alt` only when their Option-as-Alt (Meta) setting is enabled. The macOS Command shortcuts described in [input and shell commands](/cli/input-and-shell-commands/#editing-basics) require a terminal with the Kitty keyboard protocol enabled. +Bindings are the same on macOS, Linux, and Windows, except that Windows also accepts `Alt+V` for paste. For shortcuts that use `Alt`, some macOS terminals deliver `Option` as `Alt` only when their Option-as-Alt (Meta) setting is enabled. The macOS Command shortcuts described in [input and shell commands](/agents/cli/input-and-shell-commands/#editing-basics) require a terminal with the Kitty keyboard protocol enabled. ::: ### Session @@ -174,7 +174,7 @@ Bindings are the same on macOS, Linux, and Windows, except that Windows also acc ### Approvals -These bindings apply while the agent is waiting for you to approve an action. [Permissions and profiles](/cli/permissions-and-profiles/) explains the approval flow. +These bindings apply while the agent is waiting for you to approve an action. [Permissions and profiles](/agents/cli/permissions-and-profiles/) explains the approval flow. | Shortcut | Action | | --- | --- | @@ -194,7 +194,7 @@ These bindings apply while an interactive terminal command is running. ### Multi-agent tabs -When an orchestration launches child agents, an **Agents:** tab bar appears above the session. [Cloud and orchestration](/cli/cloud-and-orchestration/) covers the workflow. +When an orchestration launches child agents, an **Agents:** tab bar appears above the session. [Cloud and orchestration](/agents/cli/cloud-and-orchestration/) covers the workflow. | Shortcut | Action | | --- | --- | @@ -227,7 +227,7 @@ The input supports readline-style editing. | `Ctrl+Shift+C` | Copy the selection | | `Ctrl+X` | Cut the selection | -For mouse support, completions, and other input behavior, see [input and shell commands](/cli/input-and-shell-commands/). +For mouse support, completions, and other input behavior, see [input and shell commands](/agents/cli/input-and-shell-commands/). ## Troubleshooting @@ -274,7 +274,7 @@ The sign-in attempt was rejected or timed out. The error message in the CLI name 1. Press `Ctrl+C` to exit, then run `warp` to start normally. 2. Check the token against the resume command printed when you exited the original session. -3. If the conversation exists locally, open it from the [conversation menu](/cli/agent-conversations/#conversation-history) with `/conversations` instead. +3. If the conversation exists locally, open it from the [conversation menu](/agents/cli/agent-conversations/#conversation-history) with `/conversations` instead. ### Updating @@ -286,9 +286,9 @@ To check which version you're running, use `/version` in a session, or run: warp --version ``` -To turn off background updates for a single launch, set the `WARP_TUI_DISABLE_AUTOUPDATE` environment variable to any value. To turn them off persistently, set `general.autoupdate_enabled` to `false` in the [CLI settings file](/cli/configuration/#the-settings-file). +To turn off background updates for a single launch, set the `WARP_TUI_DISABLE_AUTOUPDATE` environment variable to any value. To turn them off persistently, set `general.autoupdate_enabled` to `false` in the [CLI settings file](/agents/cli/configuration/#the-settings-file). -If an install becomes corrupted, re-running the install command from the [quickstart](/cli/quickstart/) replaces it with the latest version. +If an install becomes corrupted, re-running the install command from the [quickstart](/agents/cli/quickstart/) replaces it with the latest version. ### Getting help diff --git a/src/content/docs/agents/getting-started/agents-in-warp.mdx b/src/content/docs/agents/getting-started/agents-in-warp.mdx index b870c572..0cef8d46 100644 --- a/src/content/docs/agents/getting-started/agents-in-warp.mdx +++ b/src/content/docs/agents/getting-started/agents-in-warp.mdx @@ -88,6 +88,16 @@ Agents work best when they understand your codebase and workflows. Warp provides --- +## The Warp Agent CLI + +The Warp Agent isn't limited to the Warp app. The [Warp Agent CLI](/agents/cli/) is a standalone terminal program that starts an agent conversation from the `warp` command, so you can use the same agent over SSH, in a different terminal emulator, or on a machine where the Warp app isn't installed. + +It runs the same agent, so your account, plan, model access, rules, and skills work the same way. Conversations sync to your Warp account, and you can hand work off to cloud agents from the CLI. + +→ [Get started with the Warp Agent CLI](/agents/cli/quickstart/) + +--- + ## Third-party CLI agents In addition to Warp's built-in agent, Warp provides first-class support for third-party CLI coding agents like Claude Code, Codex, and OpenCode. Run any supported agent inside Warp and get rich input, code review, agent notifications, vertical tabs with agent metadata, and more. @@ -115,6 +125,7 @@ Cloud agents are ideal for work that doesn't need your immediate attention—PR * [**Oz web app**](https://oz.warp.dev) - Create runs, manage schedules, browse skills, and configure integrations * [**Warp Agents overview**](/agents/local-agents/overview/) - Detailed guide to working with agents in Warp +* [**Warp Agent CLI**](/agents/cli/) - Run the Warp Agent from any terminal * [**Capabilities**](/agents/capabilities/) - All agent capabilities: planning, task lists, model choice, and more * [**Oz CLI**](/reference/cli/) - Run agents from the command line * [**Oz API & SDK**](/reference/api-and-sdk/) - Programmatic access to agent runs diff --git a/src/content/docs/agents/index.mdx b/src/content/docs/agents/index.mdx index 118f6d0d..cb9610f7 100644 --- a/src/content/docs/agents/index.mdx +++ b/src/content/docs/agents/index.mdx @@ -23,6 +23,7 @@ Oz is fully programmable—launch agents manually or build custom logic around t ## Key capabilities * [**Local Agents**](/agents/local-agents/overview/) - Interactive agents embedded in Warp. Use natural language to write code, debug issues, run commands, and automate development tasks with full terminal access. +* [**Warp Agent CLI**](/agents/cli/) - The same Warp Agent in any terminal. Run the `warp` command to start an agent conversation over SSH, in a different terminal emulator, or on a machine without the Warp app. * [**Third-party CLI agents**](/agents/cli-agents/overview/) - Use Claude Code, Codex, OpenCode, and other CLI coding agents in Warp with rich input, notifications, code review, and remote session control. * [**Cloud Agents**](/platform/) - Autonomous agents that run in the background in response to system events, schedules, or integrations. * [**Integrations**](/platform/integrations/) - Connect external system events to autonomous agent execution. Use [Slack](/platform/integrations/slack/), [Linear](/platform/integrations/linear/), [GitHub Actions](/platform/integrations/github-actions/), and other integrations to trigger agents in the cloud. @@ -33,6 +34,7 @@ Oz is fully programmable—launch agents manually or build custom logic around t ## Getting started * [**Agents in Warp**](/agents/getting-started/agents-in-warp/) - Start using agents interactively in Warp +* [**Warp Agent CLI**](/agents/cli/quickstart/) - Install the CLI and run your first agent conversation in any terminal * [**Oz web app**](https://oz.warp.dev) - Create runs, manage schedules, browse skills, and configure integrations * [**Oz CLI**](/reference/cli/) - Run agents from the command line, in CI, or on remote machines * [**Oz API & SDK**](/reference/api-and-sdk/) - Programmatically create and monitor agent runs @@ -42,6 +44,7 @@ Oz is fully programmable—launch agents manually or build custom logic around t ## Learn more * [Warp Agents overview](/agents/local-agents/overview/) - Interactive agents in Warp +* [Warp Agent CLI](/agents/cli/) - Run the Warp Agent from any terminal * [Third-party CLI agents](/agents/cli-agents/overview/) - Claude Code, Codex, OpenCode, and more * [Cloud Agents overview](/platform/) - Background agents for automation at scale * [Agent Capabilities](/agents/capabilities/) - Skills, planning, MCP, rules, and more diff --git a/src/content/docs/agents/local-agents/overview.mdx b/src/content/docs/agents/local-agents/overview.mdx index 786e16db..b9dc46b5 100644 --- a/src/content/docs/agents/local-agents/overview.mdx +++ b/src/content/docs/agents/local-agents/overview.mdx @@ -32,6 +32,7 @@ This section covers how to interact with Warp's agents and the capabilities avai * [Interactive Code Review](/agents/local-agents/interactive-code-review/) - Review agent-generated diffs, leave inline comments, and have the agent address your feedback. * [Task Lists](/agents/capabilities/task-lists/) - Track complex workflows with automatic task lists that update progress in real time. * [Web Search](/agents/capabilities/web-search/) - Allow agents to search the web for up-to-date information. +* [Warp Agent CLI](/agents/cli/) - Run the same Warp Agent outside the Warp app, in any terminal. * [Third-party CLI agents](/agents/cli-agents/overview/) - Run third-party CLI agents like Claude Code and Codex with Warp's built-in agent toolbelt. * [Active AI Recommendations](/agents/local-agents/active-ai/) - Get proactive fix recommendations based on errors and outputs. * [Voice](/agents/local-agents/interacting-with-agents/voice/) - Talk to Warp's agent using voice commands. diff --git a/src/data/vars.ts b/src/data/vars.ts index 0df1f6e0..4647ca31 100644 --- a/src/data/vars.ts +++ b/src/data/vars.ts @@ -16,9 +16,15 @@ export const VARS = { PLATFORM_RUN: "Oz run", // future name TBD // Warp Agent CLI — the standalone terminal front-end (the `warp` binary). - // Launch name confirmed via the launch blog draft (2026-07-28). NOTE: the - // WARP_AGENT_CLI key above was reserved for renaming the Oz CLI to the - // same name — that overlap now needs a product/marketing decision. + // Launch name confirmed via the launch blog draft (2026-07-28). + // + // NOTE: the WARP_AGENT_CLI key above was reserved for renaming the Oz CLI to + // this same name. That overlap is now resolved by product direction: at the + // next launch (approximately 2026-08-18) the Oz CLI is retired and wrapped + // into the Warp Agent CLI, leaving a single CLI. The two keys are expected to + // collapse into one at that point. Keeping them separate until the + // convergence ships, since merging them now would rewrite prose across both + // CLI doc surfaces. WARP_CLI: "Warp Agent CLI", // Feature names (stable — keys and values expected to remain unchanged) diff --git a/src/sidebar.ts b/src/sidebar.ts index bb28d8ad..8b8f4022 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -322,6 +322,32 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ 'agents/local-agents/generate', ], }, + { + label: 'Warp Agent CLI', + items: [ + { slug: 'agents/cli', label: 'Overview' }, + { slug: 'agents/cli/quickstart', label: 'Quickstart' }, + { + label: 'Using the agent', + collapsed: true, + items: [ + { slug: 'agents/cli/agent-conversations', label: 'Agent conversations' }, + { slug: 'agents/cli/input-and-shell-commands', label: 'Input & shell commands' }, + { slug: 'agents/cli/permissions-and-profiles', label: 'Permissions & profiles' }, + { slug: 'agents/cli/cloud-and-orchestration', label: 'Cloud & orchestration' }, + ], + }, + { + label: 'Context & customization', + collapsed: true, + items: [ + { slug: 'agents/cli/configuration', label: 'Configuration' }, + { slug: 'agents/cli/models-and-usage', label: 'Models & usage' }, + ], + }, + { slug: 'agents/cli/reference', label: 'CLI reference' }, + ], + }, { label: 'Third-Party CLI Agents', items: [ @@ -341,37 +367,6 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ }, ], }, - { - label: 'Agent CLI', - link: '/cli/', - icon: 'right-caret', - items: [ - { slug: 'cli', label: 'Overview' }, - { slug: 'cli/quickstart', label: 'Quickstart' }, - { - label: 'Using the agent', - items: [ - { slug: 'cli/agent-conversations', label: 'Agent conversations' }, - { slug: 'cli/input-and-shell-commands', label: 'Input & shell commands' }, - { slug: 'cli/permissions-and-profiles', label: 'Permissions & profiles' }, - { slug: 'cli/cloud-and-orchestration', label: 'Cloud & orchestration' }, - ], - }, - { - label: 'Context & customization', - items: [ - { slug: 'cli/configuration', label: 'Configuration' }, - { slug: 'cli/models-and-usage', label: 'Models & usage' }, - ], - }, - { - label: 'Reference', - items: [ - { slug: 'cli/reference', label: 'CLI reference' }, - ], - }, - ], - }, { label: 'Oz', link: '/platform/', diff --git a/vercel.json b/vercel.json index 21517197..7dcfb7a2 100644 --- a/vercel.json +++ b/vercel.json @@ -95,6 +95,51 @@ } ], "redirects": [ + { + "source": "/cli/", + "destination": "/agents/cli/", + "statusCode": 308 + }, + { + "source": "/cli/agent-conversations/", + "destination": "/agents/cli/agent-conversations/", + "statusCode": 308 + }, + { + "source": "/cli/cloud-and-orchestration/", + "destination": "/agents/cli/cloud-and-orchestration/", + "statusCode": 308 + }, + { + "source": "/cli/configuration/", + "destination": "/agents/cli/configuration/", + "statusCode": 308 + }, + { + "source": "/cli/input-and-shell-commands/", + "destination": "/agents/cli/input-and-shell-commands/", + "statusCode": 308 + }, + { + "source": "/cli/models-and-usage/", + "destination": "/agents/cli/models-and-usage/", + "statusCode": 308 + }, + { + "source": "/cli/permissions-and-profiles/", + "destination": "/agents/cli/permissions-and-profiles/", + "statusCode": 308 + }, + { + "source": "/cli/quickstart/", + "destination": "/agents/cli/quickstart/", + "statusCode": 308 + }, + { + "source": "/cli/reference/", + "destination": "/agents/cli/reference/", + "statusCode": 308 + }, { "source": "/agent-platform/", "destination": "/agents/", From 27380fdf6f82f1a66fd70528099f0f109636621f Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Thu, 6 Aug 2026 12:22:07 -0600 Subject: [PATCH 02/14] fix: collapse /cli redirects into a wildcard to stay under Vercel's route limit The Vercel deployment for this PR failed. Vercel caps "Routes created per Deployment" at 2048, and counts every redirect, rewrite, and header in vercel.json as a route. main sits at 2033; the nine per-page /cli redirects pushed this branch to 2042, and the Astro Vercel adapter contributes further routes on top of the config, tipping the deployment over the ceiling. Replace the nine per-page entries with two wildcard entries, bringing the total to 2035 (+2 over main instead of +9). The wildcard also covers deep links and any page added under the old path, which the enumerated list would not have. Co-Authored-By: Warp Agent --- vercel.json | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/vercel.json b/vercel.json index 7dcfb7a2..01e0c9fa 100644 --- a/vercel.json +++ b/vercel.json @@ -101,43 +101,8 @@ "statusCode": 308 }, { - "source": "/cli/agent-conversations/", - "destination": "/agents/cli/agent-conversations/", - "statusCode": 308 - }, - { - "source": "/cli/cloud-and-orchestration/", - "destination": "/agents/cli/cloud-and-orchestration/", - "statusCode": 308 - }, - { - "source": "/cli/configuration/", - "destination": "/agents/cli/configuration/", - "statusCode": 308 - }, - { - "source": "/cli/input-and-shell-commands/", - "destination": "/agents/cli/input-and-shell-commands/", - "statusCode": 308 - }, - { - "source": "/cli/models-and-usage/", - "destination": "/agents/cli/models-and-usage/", - "statusCode": 308 - }, - { - "source": "/cli/permissions-and-profiles/", - "destination": "/agents/cli/permissions-and-profiles/", - "statusCode": 308 - }, - { - "source": "/cli/quickstart/", - "destination": "/agents/cli/quickstart/", - "statusCode": 308 - }, - { - "source": "/cli/reference/", - "destination": "/agents/cli/reference/", + "source": "/cli/:path*", + "destination": "/agents/cli/:path*", "statusCode": 308 }, { From 05a0c7ab9454d01325be865acac94c4f14c54bec Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Thu, 6 Aug 2026 12:41:32 -0600 Subject: [PATCH 03/14] fix: match trailing-slash URLs in the /cli redirect The previous wildcard used ':path*', which did not match the trailing-slash URLs this site serves. Verified against the preview deployment: /cli/ redirected correctly but /cli/quickstart/ and /cli/reference/ both returned 404, so eight of the nine original URLs were broken. Use a regex capture ':path(.*)' instead, which captures the remainder of the path including its trailing slash. Keeps the route count at +2 over main. Co-Authored-By: Warp Agent --- vercel.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vercel.json b/vercel.json index 01e0c9fa..6345acd1 100644 --- a/vercel.json +++ b/vercel.json @@ -101,8 +101,8 @@ "statusCode": 308 }, { - "source": "/cli/:path*", - "destination": "/agents/cli/:path*", + "source": "/cli/:path(.*)", + "destination": "/agents/cli/:path", "statusCode": 308 }, { From cca7ef3e69733dfb0bfd0808374a89f3cdc4b19f Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Thu, 6 Aug 2026 13:29:42 -0600 Subject: [PATCH 04/14] docs: add a full-content-width tier (736px) to the screenshot standard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Warp Agent CLI statusline is content-bound: it clips rather than reflows, and showing every chip its alt text promises needs ~111 columns. Re-capturing at a narrower terminal cannot shrink it, so at 563px the text renders at roughly 48% of source and reads small. The existing standard had no width above 563px, leaving no correct option for a screenshot like this. Add 736px as a full-content-width tier. The value is not arbitrary: it is the content column, `max-width: 46rem` on `.main-pane .sl-container` in src/styles/custom.css. Because the container already caps there, 736px renders identically to omitting maxWidth — the point of naming it is that authors can now express "deliberately full width" and the lint can tell that apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart apart acheck messages from the constant so they cannot drift out of sync. - AGENTS.md: document the new tier and when to reach for it, add a "crop before widening" rule so widening stays the last resort, and make legibility explicitly outrank the preference for a smaller tier. - Apply 736px to the statusline figure. Verified: 0 net-new lint issues, 2 resolved. The 218 pre-existing missing-width warnings are still flagged, so the rule is not weakened. Co-Authored-By: Warp Agent --- .agents/skills/style_lint/style_lint.py | 23 +++++++++++++++---- AGENTS.md | 8 ++++--- src/content/docs/agents/cli/configuration.mdx | 2 +- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/.agents/skills/style_lint/style_lint.py b/.agents/skills/style_lint/style_lint.py index d6169a29..5ec8b518 100644 --- a/.agents/skills/style_lint/style_lint.py +++ b/.agents/skills/style_lint/style_lint.py @@ -108,7 +108,22 @@ TERMINOLOGY_FILE = Path(".agents/references/terminology.md") -STANDARD_SCREENSHOT_WIDTHS = {"300px", "350px", "375px", "563px"} +# Standard figure widths for screenshots. See AGENTS.md § "Screenshot sizing +# standards". +# +# 736px is full content width: it matches `.main-pane .sl-container`'s +# `max-width: 46rem` in src/styles/custom.css. Because the container already +# caps at that width, 736px renders identically to omitting maxWidth entirely. +# It is listed explicitly so authors can signal "this screenshot is +# deliberately full width" and so this check can tell that apart from a figure +# that is simply missing a width. If the content column in custom.css ever +# changes, update this value to match. +STANDARD_SCREENSHOT_WIDTHS = {"300px", "350px", "375px", "563px", "736px"} + +# Rendered as "300px, 350px, 375px, 563px, or 736px" in check messages, derived +# from the set above so the two can never drift apart. +_SORTED_WIDTHS = sorted(STANDARD_SCREENSHOT_WIDTHS) +STANDARD_WIDTHS_PHRASE = f"{', '.join(_SORTED_WIDTHS[:-1])}, or {_SORTED_WIDTHS[-1]}" SCREENSHOT_PATH_HINTS = ( "/assets/", @@ -556,7 +571,7 @@ def check_screenshot_widths(lines: List[str], filepath: str) -> List[Issue]: if figure_start_line is None: issues.append(Issue( filepath, i, "screenshot-width", - "Likely screenshot image should be wrapped in a
with a standard maxWidth (300px, 350px, 375px, or 563px)", + f"Likely screenshot image should be wrapped in a
with a standard maxWidth ({STANDARD_WIDTHS_PHRASE})", "warning", )) else: @@ -568,13 +583,13 @@ def check_screenshot_widths(lines: List[str], filepath: str) -> List[Issue]: if width is None: issues.append(Issue( filepath, figure_start_line, "screenshot-width", - "Screenshot figure is missing a standard maxWidth (300px, 350px, 375px, or 563px)", + f"Screenshot figure is missing a standard maxWidth ({STANDARD_WIDTHS_PHRASE})", "warning", )) elif width not in STANDARD_SCREENSHOT_WIDTHS: issues.append(Issue( filepath, figure_start_line, "screenshot-width", - f"Screenshot figure uses non-standard maxWidth \"{width}\"; use one of {', '.join(sorted(STANDARD_SCREENSHOT_WIDTHS))}", + f"Screenshot figure uses non-standard maxWidth \"{width}\"; use one of {STANDARD_WIDTHS_PHRASE}", "warning", )) figure_start_line = None diff --git a/AGENTS.md b/AGENTS.md index 68504763..0cd843e1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -228,15 +228,17 @@ Use screenshots to clarify product surfaces, configuration points, or visual sta Use consistent screenshot widths so docs pages feel visually balanced. Crop unnecessary empty space before resizing, then choose the closest standard size. **Standard widths:** -- **Large screenshots: default content width** — Use normal `
` or Markdown image rendering for full-window, full-pane, or broad product-surface screenshots where the surrounding layout matters. In legacy GitBook screenshots, this was usually `563px`. +- **Full content width: 736px** — Use for wide screenshots whose content cannot be cropped narrower without clipping, such as full-width terminal strips, wide status bars, and wide tables. `736px` equals the content column (`46rem`, set on `.main-pane .sl-container` in `src/styles/custom.css`), so it renders the same as omitting `maxWidth`. Set it explicitly anyway: it records that the width is deliberate rather than forgotten, and the style lint treats a missing width as an error. Reach for this tier only when a narrower size would make text illegible. +- **Large screenshots: 563px** — The default for full-window, full-pane, or broad product-surface screenshots where the surrounding layout matters. This was the usual width in legacy GitBook screenshots. Prefer this over `736px` unless the content genuinely needs the extra room. - **Medium screenshots: ~375px** — Use for narrow UI surfaces such as popovers, command menus, side panes, dropdowns, and focused interaction flows. This is the preferred constrained size for most small Warp UI screenshots. - **Small screenshots: ~300-350px** — Use for tightly cropped controls, chips, buttons, tooltips, and small menus. Use a smaller width only when the UI remains legible and the crop is intentionally compact. **Rules:** - **Avoid arbitrary widths** — Choose the nearest standard size instead of one-off values. If a screenshot needs a different size, the reason should be clear from the UI being shown. - **Keep sequences consistent** — Screenshots in the same section or step sequence should use the same width unless they show meaningfully different UI surfaces. -- **Preserve legibility** — Text in the screenshot must remain readable at the chosen size on the docs page. -- **Prefer the default figure size for large screenshots** — Only constrain width when the screenshot is a narrow UI element that looks oversized at full content width. +- **Preserve legibility** — Text in the screenshot must remain readable at the chosen size on the docs page. This rule outranks the preference for a smaller tier: if text is unreadable at `563px`, move up to `736px` rather than shipping an illegible image. +- **Crop before widening** — Widening is the last resort. First crop out empty space and anything that is not the subject, and re-capture at a narrower terminal or window size if you can. Only step up a tier when the content itself sets the floor, as with a status bar that clips instead of reflowing. +- **Prefer the default figure size for large screenshots** — Only constrain width below `563px` when the screenshot is a narrow UI element that looks oversized at full content width. #### Image caption guidelines Captions orient the reader — they identify what the image shows so the reader knows where to look. They are not a place for instructions, marketing language, or exhaustive descriptions. diff --git a/src/content/docs/agents/cli/configuration.mdx b/src/content/docs/agents/cli/configuration.mdx index e279316a..0fb89802 100644 --- a/src/content/docs/agents/cli/configuration.mdx +++ b/src/content/docs/agents/cli/configuration.mdx @@ -67,7 +67,7 @@ In auto mode, detection runs at startup, so if you switch your terminal's colors The statusline is the row below the CLI's input box that shows session information at a glance. By default it shows the auto-approve indicator, the active model, the working directory, the Git branch, and the Git diff status inside a repository, plus the Vim mode indicator when Vim mode is on. You can enable any of these items: -
+
![The Warp Agent CLI statusline showing the auto-approve, model, working directory, Git branch status, Git diff status, credit usage, context window usage, and agent to-do list chips](../../../../assets/agents/cli/tui-statusline.png)
The statusline with credit usage, context window usage, and task list chips enabled.
From c75278d3ea88e9d6f27efa71dc9e4147230557d9 Mon Sep 17 00:00:00 2001 From: rachaelrenk Date: Thu, 6 Aug 2026 19:39:09 +0000 Subject: [PATCH 05/14] docs: re-crop the Agents tab bar screenshot for legibility The previous capture was the full width of a ~105-column terminal, so roughly 45% of the image was empty background to the right of the tabs. Downscaled into the 563px figure, that left each character cell about 5.4 CSS px wide and the whole bar only 19px tall. Re-captured the same state from the running Warp Agent CLI and cropped tightly to the tab bar: - Dimensions: 1176x40 -> 1126x68 - Aspect ratio: 29.4:1 -> 16.56:1 - Rendered height at 563px: 19px -> 34px - Character cell at 563px: 5.4 CSS px -> 8.6 CSS px (~60% larger) 1126px is exactly 2x the 563px figure width, so the asset renders at a clean 2x with no resampling blur. Padding is symmetric: 37px left and right of the text, 18px above and below the tab-bar strip. The state still matches the caption: one child agent running and two finished. Verified by watching all three tabs transition rather than assuming glyph meanings - every tab shows a filled dot while running and switches to its own icon on completion, and the frame was captured when exactly one dot remained. The figure keeps its 563px maxWidth; the tighter crop makes widening unnecessary. Co-Authored-By: Warp Agent --- src/assets/agents/cli/tui-agents-tab-bar.png | Bin 12771 -> 9397 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/assets/agents/cli/tui-agents-tab-bar.png b/src/assets/agents/cli/tui-agents-tab-bar.png index c72a687223ab12412c2624d479b3838dd4ae204b..b9f9ac45fb8a3dafde73f0d693c7e2c215fc1525 100644 GIT binary patch literal 9397 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 Y-2d&wzSZ~3KPvkut0Ge=Wg7ZF0I*+Vz5oCK literal 12771 zcmYkjcRbZ^_&;7*hm2z%r8vkao3e?Jy^6@lo|)M*95XVK%tQzY*;}?c3Y}z=ke$8P z@9O>id>)^lKh!zSd3l}tzOLuGZc$nqcgaXDk(@hsj!aoeUgz97{1o^F zK6g%_NLgO?zW3;ArkA^}?&$j7xpm2_ zCw)?0L-Qk=?L(IHZ=VI1J*#KbjuCCS#y{uSkBV78ojVTf!ef$QB#&sH77jR=-ab_o zkp5thnqOzrceTwhv3=S_^uHgv1R6%J2TA_Lr@`zBnE{PsL%sNH5`pXf*DOK4Vq0G zgUq4#`HiJ;p{yA`er?(qBt|cO^%GO@beAMej-zeLiH;#-(+Zu8bl`uNImi>v)il5# z5vP}pIqlW;h@7DJ`jNhtDIPF}n6(O6f*GuoSonarIrs%;@AM4U54lMpEO&bdx_dGy*|~#Fa~W8=dgY7~j!GHyk2^B= z_~ySyRo4-(9Gegi3<({p-rUAEPi}7fx6a@A^0S9;4tL82BKhSI4DUQdeY2y-7f;dz zaKfQgRY^K3{10YN{qVIX@mrSVOB;ju*1T=UeKrNJyRCdFuKAxk*}}#JTrTS|!yu_R z;VR*QUL?p1u4tXdi-cFs5ePY&q9W_c4UOC~U?no-s#a!@Az*>e4)7JJ@unSg+``O+i zpY}>l_c^&9^WubresBDV&a0`@H%fX&ShKvO{@YLb>xt8faaNRa2;z{Z>i5_pk@9>$ zVF3wLVm{iXm2;0hWJI%3MR7*A`Rx_CM{r}4t;}KwWFzUYfelMWQa*>}x0oeZi`DkVErpOG6%D~#De91T@!&RH96*VU4 zz*>&5p1n?DNH(S$SZ;4pTlBME^G%XUq9rPvGdkZcM1M-FVmLqj$*s;XneQVu2Lqlw zN3VCI6q+QmDlUF1*vEa{&=e!+b12*o3s6Cr#b~S0Dr6_gsj^@qBl!gJqi)(0qqVkGm^8s}HGAGt<<#Ae*u z>vh|CaaJG2gNaw=NYc3?q?>#P!-7$p9xq9;QDm2zQ3-Z@UpQfq^j-1KTHnKTO22TE zVYS?y$33ya5?%Xle164Id17>&vJ38AWlu6*3x4kz{jSwMI>|XN$?f1D+%$eDIb)YE z_OD|zZ_}?Ai!}}L<1=tG$g=0-i!4wom*hxfF(YvK>SOgD%ZEG5M?1?LSV8Y?;}D(# zbYUJP$H$7jZx>&w2N^0Bg}?rJ3Vj)~@rwDjhzaKZ-5i#%8LC9rKvwr6n4LkDS-=&0?k_ zsO3;rN!n`sZA#1?^INdTa*=kZL{6^goMm558n=dta5Gf+NAu3;+1c4BYL0JNGE7%L z39HK@xv@Hy1ieoY7G*cJRjw5IF8$#0c9V<5&5(!5C2~{B7Znu&LbEB?7nbUO%<iC(xKH&H7-^e@JS_s9Vydg4HRGZ4%v-Q56 z=|}fdNJHN!K5l*XFrQ832MY!ns!JSlPU9t2ln`mCS<`8;v_%kI1Ittc98Hd<*1%g$a^vaIp$1=1WvI4ma6m8`%g$KKpK$C5K7qKs6>^&+&}`OR~c zicDxrhcZZCyLaWL<}{!&BR#!{$I|_X z_ST%ZE`FAfbB`}E?RzPIcM|`^ z78TBn2w~=zSI4@EXQt(+CKK>D_tBuHHQwQNlcWP!LIt|?sT5*d*{FgG+>D1P<%V~--EV%8 z9Vigym=_&zxV>3t|Gt_VTUS?iHE#Y_YiLoC=i+yT$CG94kgyaaY&A~HAEA77HIArSV0iuZAv8lzz7q6jT|XEyLJoL9&Fo|&1R3BLVFBMOZOu}j0myNJdJ5b|i~>h`4MEZ6tV z7605ZQe7iDB z;t*zKD)-chN4r<)PYiT*%_{F;<;MoI=~)sGF~PT)&rRhOU1zi#=@#C798yJT(!NX7 zckXRxpoU+P+dmO`^38mfR|GarMrKO*s}(kx?2<4i7Z=yHYk4_2ZA`lyY;2PI{Y-21 z%e+~Ad!6);jDk*fCh9%XZ#w*}w8L?hAInaCYCGQ^PKN#RMTcf?>}KB9eBYxww>)dR zvy}C?=71yKhm}3^TVz)yYs_73k$A1_$qBaTq?Zxj*+~3(Ue1uGY_!l{`2>9RSF1g znmpB4ym8Wpw&}MVSrU|#l|RQY2$5fvw0*R@JLc@QI=XYRH&y!KL(|dU25Ks*wrQ7l z8ky$i=JxjXI`{5HkX^p@c(^PjC1rK2CTMTMtHSzg(fjvL>Wl;g1QOY#j#etd!omVu z&JO0Y&ft2oMeDvz#`W$8TUlr0`RbQ(!W4|6{EnlQ-@og`uP|7g9PPEtzxMl%!`--k zz54OU=HG_3s}i2vJUot{6R%a<3fg_o1u_uqGV$N&+?xtw+Kz5HS#`!EBKP0=DuNgM z$=GXRu-r-&TV7sKG5u;XV5$jL9QznID*To8?sNbB>4--GJGv?=U*2T}`if^!boHIg z9L%3?Nanf!?ug3zb|fzn1B5d^KHh!Rk6TKrsi?>vo6N(f8TeUPT?;+wyUf!N5FH&2 zcPP+xMcf_9%g)uQyFHG_bLm-CzLn?dz~RU4tJu2g%)WWUrp@l4v!f}r3_I%Hy~j!? z7BOO(-+q2D+*=(RTHd)T>S8+oEpvxgRb72`@cjd8>wGq4kPS!MI8Cm+R@45O4NFVQ zarj`LKYz~QbQ-I6?2M-M@bK6r!hQelR5zD=%W;&yYxnO&gZIYoqN3|Pr#VIT=H|a^ zU1zMnroDXmaxnW2k*=<)iptMogDto!2RpkQ(aG|ovkPJCd9O^$XKoo**~4$Sf5aipP&dZ#M`E2HjbX_5jFsyzoX50U!qeC8B ze#?3Cc<$9B`!x2?I+J9X&JC;8EoUcdkpjx`a5p>MGN&7{B9jFL1^nt2Z{EDo%#s$e z`Nqx79TOWX<@&qBCM!VCz<@Y4_H=jUtYWA#NZngDdCrty)b2Z5%hZ}@Lq$bJgU51m zQW6`Y?X{F&GLNC2>v8T$Z=cj2V}aRNjdPZe&GVDMzSmODO*=oKhR%K(I(yU^>FVk} zqvxA!@Z$59O35E7HmEQ>+ErFlyHAr>TwI)++wmOhsM5`)z2U5;h!DutrYns7VL)}0 zhZfDILyeZ#zi+gcs$~2M`!X$Uw8nXgj_08~OG0^h`8CyKc@BIHHMPehC%W8%ox3FI?IJ7N3Y-0))P(GLg2;sX3+!B?m6)`2 z;O6XS*nZGc&(FB>;=ct8M-Qu(%lL3R>N(&S<79mOAAe zNqd3zTlj^}Y1U__Cz`J%eQ1qu06!eow4Csu(XG=ih!B4N{dMvy;xx3hBk$VM^0}hj z#vE%}tzpMk-Pv7TU0-l${+(=+&==g=+!S|TCU2EQ=32TX$Er<%18fO{_$E@hoO=x?&WV1YsW`ZXXI1ROb;JE-1_qsR%?0d z;1}ue%!X|m;pxX;j))rb7}@GxL+7R{sQgw_WUdrH6B(oEdMgprwr|s5)lHL95iTx( zT#W{=H9~5ZNO>1({!33q*wJhvB3`ga@rfT5p3&La*&XzeCZqJL<42e{S!5mp(tLn4Y>5wLDg{27OD~juJ5Mh)3V~ zcmLj_^d{ct(eCq^Ue?yu&6{6tprntwKRZn_4x=ASTdnRf2 zGF$gFrRLn~pc{g}eQ7LO_Jy{b@>`R_XhEI1x^7_kT1ao{zQg&Po$Q^}`pm41ROsq9 z{Yi7!+}Z-K@#GyY3Yk;9nEyFU{jRRA%4IctLZKgXZr9k^pI^FZ4}=ehrlzc1H}hNq z6wnr|{}_?L!NCFWiGHQ+z#h!eWR+X!NnnM&5LB-)tZ^!% zgzmdf)0voOM}4Gsv#!;^UKbSu77${G4W7x$Q9BM zX3l6q-|Yo3z9H^`?PMaKYAT(lq-A8zI-;l%*+Ax=E5iaD95w?v3U5Y@K_Vft=diDU zB5Q2=UdPFt?q}bLU_K)e)g5KHQtE39g)8$qEe$#|Eh{SsK>fb1u9da5^mhN9o#@ay zqY~Ke>FO~j2PixZ4RSfqPdf_(tbBZ$xXK46K6!WJ{`H3U+{*{IZ3(j!l@p_%J%fUx zA_;p4dZWZxV!i6Jm|Jei@(Xr#XpZH9x7~@?R5|m44sltZv{ExOuSCf=pPe27>(bNE zNFL0-@Z0-K@Uk4>*vH2QI;b0^nZln9+XnW6DPTKcA_l4bA~8`AxT`gkX#US1&%fgg z#cx_o*WboTUlMn>U7Lh``fF@r;$-mi>3KYICh3gy^z>J+ync5O$85kV0h;&2M#E0Y zvJDFLNxoe^6q)kBr={frA0I!ob$@@qt*tFB?UJ`?Lx5BB!Jo#)Mj!-{>B=K~bVy2M z3c{GQFKB3DVvPw$kG;#|rsaO0*$tr_Aw}%L*L-Xfu}35Rz=XsPrh&v%43f;@Sn zge~`9YuZy}q2%`v>;hUz$;cQlyvL!d`*w|ql(6OCPx?%EoI@HcwxG*MtY=tNK)Y#I zmE+hgU=L`G^*pG!hjngqViRK}l610kvMK0ZWP2owr}3VQ(a;G+DUV^(_U+DwWmOr8 z+WF>$JvR1E>IkPOSqzu>gOm);=;)l4@w$rqe0C&)QPMkJz;m`IVSC%XonKhJ;beD= zHKAudE9mdmfkuYt`GM?_k&z@FR6X;TPztt;YI#2;fX$(`z4ZJ#r-}NQn3#@^4%-Mr zL>9FIWj;mYFfco`=ZzaTDCIyfIQ%SDR#CBsQri}CNFzLWIM8RTCUv#1n<;2z?R($X%06@mwm?ENGUA9z|`pOr6Yg(tgwh#OF zBQ!la(z{l;_*Td3@zRw<;+@_gUa+cFBdd|pQgtZGNE&Kt+y_GuStQ5|nkaeb%u3LJ zNl8f#C3WFC_6B-xZf>A0AAESY1N{O!x3shbfL>BuOlo1IrS%E*j{wXngN`@4L0n#u z@Wc-ahVQ*uGA;G>54Dr(>+4_Mc#sd);oZBjRd$4&`=fX8m77~@R8mp7W%a@lo)Nz)Cp+CrfWnRz=Taa2KS@r-^ z#`Ca}UwsQK)Xve#;NT#zI&`_^D_&z}w<~NFru?BIvAOlnwpxN94-)excCk_UYq|d z8dK7=`!KQr>STGS^byErkO9rEGhNWbAB-F5(g2l$(K%>8dVJrL^>zxl9XuY@ArJ86 z20xbu-}}*wAAh+~%ErzSd?^ljAqsgSsSQS-)c}?r^3${ggGB1flW=_crg;vYO;O_y@NFTQ_ zY2mpVm2=xzTCR*%VV?&U+n8x+YED%-(BtRIrvLc)Ge0+1OC>;>sjC+74L-(L-4h#5 znh>#T*m5(}hlf?8jXpy6L$?q7qjT=xzu(c-_0wTk%5Qhyzxg74AqA5(W0X9Qr}4vw zzAM8Y+0(`7NKc`rF!B5K5A}I>*QQz=4&7C_!sKY^`McbWMM&{jsH_YKXI^9HuJiHL z1Z;s3Em-!ow_mDu9LsrPZMt32D80KO54Uhzw83dURpY>bf$GS2{rA6ngHONU*#LIK z3`G`pe{lIxq!|p9kdGf$)YVT+?=9mvvizxFS`&iw^=fNr zKG`+Q>;due?TZsdup_v>F|B$kG{(`G9Bq({!{KTi$MWqi2~Pl(abs1~)p_{%x>3*- z*z!ggQ*A#{tu;f5iHYqPWol-MgAE|LL2FSAd;_#@`?Ht+0_-2L|jOD8;7U+6|&UKZ;)QtsWM07b%cduWV(ibcRmvm z6a=Qr3fMKk^p_YnOa>mUc0Qx`GrEeP%K~))VojE&ng{dXH3ox^EytHFC@ef5RaaiF zgTw&FWPFSDR7`~D286$^da`1E1;`?yq3OsY&?W>)0>hieybnNxefaR9u<#@I4H}YQ zzjWMU2dcZXGc})BY`f8fZ#G31Aqy8qs;H;{bNu6BF!QGT`ntM1pn&*{>uDJ2FLT8@ zVv$4?S24Zbp5GBFivSk5au0TNZb=C*8jYqQk^TF^*N&=nP8lbRq=Up6{c;Kf0;IUd zfk9SQc_quBN<8%_8Uo%J1YR6)6&}T0jgo&@rIADvo2C&XzybrQJLfU+zqczNU%~Yo zKaOgwuBIbQELrwE#5a5cRcbL*Vw~-RwhHNv9OQD`xhQJ;)vL zJD*UjG#@YDs-J@$A{pUY6_1VA=3-~>D(6_yP^ogT3t)>QhVMHv{P;;ki=4ktCAaBTMdEpnUGP z5||ZF&+396u#hJ$do~er+2AI37jZ-#UWN(mn1UjbDwgBGmcq-B^KfWnM8?I%#l}vw z1hp_D)-4?D?eS$@8YXON`kddVP<5fyItB`tro-~>E+k(*;LfdGKk$!#Lt9)GPe0jA z*l5{udg#y-d>+q)rc;YEx5yr11As~JG=J;=jnzaT;`{u9BUHDdzTOucdsfh?n5D=^ zP0de!Ka=UFF$&r=5@B{TGJ3j$AR<1!f_o=t6m|Jgpv~93Z;qq9tvOHr(o!AASk8^O zkk@sWDZtVI(WpqP5M`Tik#vc=&(vlIgVfU1T{XYXe~K4;u6Jtdxk-wimP78On9?0p zg9!2~x17fH_4EiI`l_j^HT5_6E@cJWFi1B0^r@KWOkbM@{h%!0j+T}dToDJx(#D3K zmKKyl0EqYyH4Sw~s^;zQstELFcNR=z672d(Hy#l^uaWKVn+WvFaHQOK16TJ%ZUq)f z!)KwQiZLIj)`-F+kq9jnK$tit8K*2o*^A&(J(hn49L&8M_&{Qq+dcF7>(>d$+F+%o z1BMyUjr@lUmIj1|yyMhGvJmz_Y}7mFRs|}htZcpc=x@5DkKn7|f64I%s_vN*68d`Zf;vZzQwK>-q5Oq`2oqw^FpVt@eUOov(HB+U)aTlU)f0`mZ zM#-9uHTijo=6+5*>^PGgDYA0VjyJ6CX?$zj(@qiV(a?w@ZvT7fbp4J+sokr9&5ptk zR&%YlQ3AhrI#hDx$|6yP;<^@>DlH<6V(^bB1VT`*4ULhMiUO@UR)R-Y;v@(Ks7Nu( z_9x*^6Y;O6-X47oeAIvXCfo3bTx5bZ1J7@B>R+k^+S0zoIltwtGWphJG$k3b;**}N z?y%mKVpjUHi18t;Tm5=H}R4*BhW7;FG%7#J8-?+-)p+<{QMP=!=%E6MbGXj9#( zwmQgNpd-Xyb6?G-L4<<%;6ywi#>YUd13=Z~gjO)NmwhoOigDzA)ry$o#l zx#)sTyd;%;>9FCL@Nx)OaCvZeXC$Ws27|(-+A|Z;GSX?&YRl2lDuf_A$xgJxxm8e9 z$gU*H@OXvku%~7BwBr~hlSXp#TB^zKu``dCs2ds}9o`qkMq0}Yx5eMlvy`nYNEoTV z#;%4GU?-(kOf6hAE9kU&VDr&9jltsA3Bu_`+11giYmZAUWRWERCks}syd3AA2^9?; zzCioz-Jx0eQcObGbJU1QbA^YsA=Z*V6rV+QrXU(8$WRrZZ8#m@#aXT9>G*9YU$!dJ z>=F&DEHjlFgFQOsF8@nQWnEeh#Sj(=_pjqk4r^X{Q-0$D_109}CZ7*r?jf3?nnWN_ z^vd?)B>I79BT?ffbDh7g?%+p@?q9i{-~n?uO}r+c2Lbfj*7o*5$5&SVn<^j$SP*iL z9~X0DTxgBiI zLD)th!xYzzr*}7g@{=)9ZsqXsu-BwdgwE&(!x|WLy-ZFH1e%9%rgmtVfT#!@A7HvW zOlV*llp^JKi*38Kpg{EA`ks3V4j^X;Mjq`HGNg>6{n9NmuD|7BlKYN8iYdnyWW6V_ zsdD0LFi((iGy@L)@+S~s!$5e>V_2=FayJIG0q(|Wvazn90I}i$!HS1?X3e;ps-4{; zSaDi~5%5-kfRV_}qmzNvEyK#5V2UM33Ln?#V&bjk-PP|X9sW&s*8A{qQ0agqQb|oi zgO`(&8Dj*-5yTsFbz8QgvU1eW@)dql7#@RSx^d%uK>;TpA0H9{RI;}=C3EeXLL%EM z>>v!wz~0=}LmLl)cT7u25O816;-?XIo@|77h=|ZLini|2Zl;MdlJ_I~`;2)Zj299T zT8$!H1EcKU6OaCyE<&#$z{|@EIWQ=(mZ&cl^v^TNDeFI%q!3A&8~mF{@F6aESF&?( zKnS)6rUm2_CLRL}&8kXkUmoF-+s?VaL>K60UAr`PS*gZNiJ%H39I_K%gT_isLWZNeB`)jrV zTKCD4*-?Iwyz%k!It}CybcsTS4GRv{^He-oouACE>EvSXDcQkbJ6p)CKGf!21aNL) z5iErE{rm2-J(R<1^4g%lKpZVYtO&_@riKkLc3@zjr{^s>Tc|DwP&+$2f2k(I;<^0# zcJzafrSF%;&?orzm28L^m@$F-(?n3ZVfV0DENem}b`H{+f4OmnQ#Vh|c!+>W znW-#HFvUHV@Wb5Ia7NAkbyI6h;_jRXx_`kF=(D!4i*Kc_w^Az5D8%!EQcIcN3FyVb$D0pp&M9a1VqP8uo&SBOL?WR6{+CLk?@r^iCYAFxYlwO z$d77VtsWB;6uhr{0*ZeMJPM@iPai<8e=lFn2Sy4o8-0840)&@QFsA}{3z>(h?zsWW$wnX8dVmU; zPKtRf{eVPLXeQGO#1eUDai3GxBZZy{-Frs|L4%a0aC%0UQqFfcoAXOGlS9||+1{&n zQt2rvk$J)d4&huphRvIOL5K807JWYQc$#_3hhR|u^kqQ~F$9GH^IsUh<$`MGmxAyP zgs9B^uh4YoW}n^^fgDa47P&#WL6b!1K$#dLF*!Lo@OsE}z!gD?1tSLqc9w*m?L{19 zng_!camtC6ka2Eqy1A6zRHrT~xzk0%|84j#+qyTDbYE|;|F2*oBi;w1jDe>I^Vx3* zW-Zqs#W6C1a|G*o>MG|>M$in@e5+3hf4HR(AX#l9x&*qOUy-;Kbb1U9=y<0zC@%?; zBR+$2d^8(E&dO>I5=RrrYhgys1nKi~Y0Fhp#2xN)gbxbs2sfBz}vfHRts>fpro-;vi~c87wl>)3Vzw_ z`_kr+vRNgz-|phH3Li65&GsS2Z=Z9Mm8}3{Wnyv)hY&t3fwt`9l?e1`?UhFe#31Fa zSKv$Ks1W9#9~LLDKONVkWe6u$zi(nfezNnb{T->82QiGY0FwhOAnLu&Tsy#P(pVdGc52ZTGvIO3pMB?F>?Y+a zynp?D(RFNj`}EU*{*vkQ&(>ikZe_sB%?-!We3+4dyl0zOKC}D6)0n1ziHO*gw1@gP zGDP;3C%;!}M&k-XK48nax8!d|Qp#{q?SI#$L_Sf+;nQB!nG9CaHZ;6=DKhLsNJxn1 zYK2~@3D~s(nBa2V%kSvyR8JKoP*GA%#5Z$$hc~#O`MshE9h|bToS&S~fk#FAdma3l&1Ap+d>CvG9g zWt3PUvWUS4agaGhPfd--K*Rit%-v%@&onG_PnepoK z*JNg|blw>z=7OMihG`kh0mIFHJiB|SfV_gnaEr)AqVX&qXWJ`ij|=>P+1zNgsse&% z-+cs_HpYcT`W~_|K}n+@gT@dSS23T-CP+0Lt;`cWBUvDghd=Hyb?k|PsZ|*I{3Cfpuw<%BiaAB&#W<~|@sGu1v@{O3$ENO1*{Npuc!X}o zAs5Y?=4;MAUwyzYHEnL|nPNWhEtcPh=Y{P1wqhbCBIQJuhe}9%b=>V282($b$dJ}I zxJ5}nURK2wB{7Mm;XtD1wr>s>EV!wnhJ$Md((vS`2``-IN41TP{fKevZz0J;WM8_u zF=CTtyg$7H0-;vJ#!BFF+AmMhbCne*TV_Y03KG5s&!vm-RM~4kgs5Kcy@aR_)rfek z+rP+f@Med(g{D`fz>bn6Y-Po0eU(4@leaBO(LH^O1RpBx3GMTzZ;=a{3C{IT5$NX_ zeM6Ng0glhjf)4tfaF(DXgT>2)fTG~yPk=u4%w54Bw+I$_sG?}-=pgGJb^D~LV|{;E zM`|_4jwXm{b1cgctL@w$e}Xkz$uXX}{qT}Zprn2jTGLo6be*p! zohU&Gg~lXwphEXH7MZLSM?y?Ha zCwD%a$6IS8>*SPf_;nddWjSL_#Gln|GOB+cJv1V-PEY;;`#6F1-IgwkrMZY4;;mBC zsZ_(p>ilmTvlPr*-mr|P#_IKVD3&XUR3%FP-z&Bn zh^X$}`MMfTqH?pKh*JAa|+)~L-^y3bIJ-D@+ESnA^#tH C9q26p From ecf059eb7ec1081f0aaa82ff5f6ffb81fa9818ec Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Fri, 7 Aug 2026 09:09:16 -0600 Subject: [PATCH 06/14] docs: reframe the Agents landing page around three access surfaces Per HYC's review of #486: the page led by defining Oz rather than the Warp Agent, and its single flat "Key capabilities" list mixed surfaces (Local Agents, Warp Agent CLI, third-party CLI agents) with platform concerns (Cloud Agents, Integrations, Oz Platform). A first-time reader picked from six links before learning what the agent is. Restructure to answer, in order: what the agent is, how to reach it, what the platform adds. - Open with the Warp Agent instead of Oz. - Add "Ways to use the Warp Agent" as the page's spine, with the three surfaces as peers: the Warp app, the Warp Agent CLI, and cloud agents. - Give third-party CLI agents their own section. They belong on this tab, but they are not a way to use the Warp Agent, so the distinction is now structural rather than just wording. - Collapse the platform material into one pointer to the Oz tab, and drop the "Learn more" list that duplicated the Oz tab's own index (Integrations, Environments, Skills as Agents, Managing Cloud Agents). Verified none of those pages is orphaned; each has 9-86 other inbound links. Contextual crosslinks into Oz are kept. What is removed is the duplicate table of contents, per AGENTS.md: cross-reference related features prominently, "not as generic link lists added only for SEO." Co-Authored-By: WCo-Authored-By: WCo-Authored-By: WCo-Authc/content/docs/agents/local-agents/overview.mdx src/sidebar.ts src/content/docs/agents/getting-starCo-Authored-By: WCo-Authored-By: WCo-Aut-F - <<'EOF' docs: retitle the Warp Agents group landing and promote the CLI mention Three pages read as broad "here's the agent" pages: /agents/Three pages read as broad "here's the agent" pages: /agents/Three pag in Warp"), and /agents/local-agents/overview ("Warp Agents overview"). The tit/agents/local-agents/overview ( orients/agents/local-agents/overview ("Warp Agents overview"). The tit/agents/lverview", matching every sibling group. The Warp Agent CLI and Third-Party CLI Agents groups already label their landing page this way; this was the only group landing repeating its own group name, so the name,r read "WARP AGENTS > Warp Agents overview". - Page title becomes "Using the- Page title becomes "Using the- Page title becomes "Using the- Capabilities (Rules, Skills, MCP, planning), which are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-su are cross-tem list to a short "Outside the Warp app" section. HYC reviewed the branch preview with the bullet already present and still asked for a mention. - Update the one stale "Warp Agents overview" link label. No slug, path, or URL change, so no redirect. Co-Authored-By: Warp Agent --- src/content/docs/agents/index.mdx | 65 +++++++++++++++---------------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/src/content/docs/agents/index.mdx b/src/content/docs/agents/index.mdx index cb9610f7..cb2f03b1 100644 --- a/src/content/docs/agents/index.mdx +++ b/src/content/docs/agents/index.mdx @@ -1,55 +1,52 @@ --- title: Agents overview description: >- - Oz is the orchestration platform for cloud agents, powering both interactive - and autonomous agents for development workflows. + The Warp Agent writes code, debugs issues, and runs commands. Use it in the + Warp app, in any terminal with the CLI, or in the cloud. --- -Warp includes **Oz**, the orchestration platform that powers all of Warp's agents. Oz runs interactive agents locally inside Warp for real-time coding assistance and deploys autonomous agents in the cloud for background automation, event-driven workflows, and parallel execution across repos and teams. +The **Warp Agent** writes and edits code, debugs issues, runs commands, and works through multi-step tasks from natural language prompts. It reads your codebase, follows your rules and skills, and asks for approval before it acts. -Warp's client is open source under [AGPL v3](https://github.com/warpdotdev/warp/blob/master/LICENSE-AGPL), so the editor and terminal that host your agents are fully auditable. See [Contributing to Warp](/support-and-community/community/contributing/) for the source and contribution flow. +You reach the same agent three ways. Which one you pick depends on where you're working, not on what the agent can do. + +--- -With Oz, you can: +## Ways to use the Warp Agent -* Run interactive agent conversations in Warp for real-time coding assistance -* Deploy autonomous agents that run in the cloud from triggers, schedules, or integrations -* Coordinate multiple agents concurrently across machines, repos, and teams -* Track, audit, and share agent activity with full visibility into what ran and what it did +* [**In the Warp app**](/agents/local-agents/overview/) - The full experience, with code review, agent management, and the terminal alongside your conversation. Start here if you use Warp as your terminal. +* [**In any terminal, with the Warp Agent CLI**](/agents/cli/) - Run the `warp` command to start an agent conversation in any terminal emulator, over SSH, or on a machine where the Warp app isn't installed. +* [**In the cloud, as a cloud agent**](/platform/) - Run the agent in the background from a trigger, a schedule, or an integration, without keeping a session open. Ideal for PR reviews, issue triage, and routine maintenance. -Oz is fully programmable—launch agents manually or build custom logic around them with triggers, schedules, environments, and your choice of hosting (Warp's cloud or your own). +Your account, plan, model access, rules, and skills carry across all three, and conversations sync to your Warp account so you can move between them. --- -## Key capabilities +## Third-party CLI agents -* [**Local Agents**](/agents/local-agents/overview/) - Interactive agents embedded in Warp. Use natural language to write code, debug issues, run commands, and automate development tasks with full terminal access. -* [**Warp Agent CLI**](/agents/cli/) - The same Warp Agent in any terminal. Run the `warp` command to start an agent conversation over SSH, in a different terminal emulator, or on a machine without the Warp app. -* [**Third-party CLI agents**](/agents/cli-agents/overview/) - Use Claude Code, Codex, OpenCode, and other CLI coding agents in Warp with rich input, notifications, code review, and remote session control. -* [**Cloud Agents**](/platform/) - Autonomous agents that run in the background in response to system events, schedules, or integrations. -* [**Integrations**](/platform/integrations/) - Connect external system events to autonomous agent execution. Use [Slack](/platform/integrations/slack/), [Linear](/platform/integrations/linear/), [GitHub Actions](/platform/integrations/github-actions/), and other integrations to trigger agents in the cloud. -* [**Oz Platform**](/platform/overview/) - The underlying infrastructure that powers Oz, including the CLI, API/SDK, orchestration layer, environments, secrets, and management/observability. +Separately from the Warp Agent, Warp gives third-party CLI coding agents first-class support. Run Claude Code, Codex, OpenCode, and others inside Warp and get rich input, agent notifications, inline code review, and remote session control. + +→ [Learn about third-party CLI agents](/agents/cli-agents/overview/) + +--- + +## The platform behind the agent + +[**Oz**](/platform/overview/) is Warp's programmable platform for running and coordinating agents at scale. It provides the environments, triggers, integrations, orchestration, and observability that cloud agents run on, along with a CLI, API, and SDK for driving agents programmatically. + +The Oz tab covers the platform in full. --- ## Getting started -* [**Agents in Warp**](/agents/getting-started/agents-in-warp/) - Start using agents interactively in Warp -* [**Warp Agent CLI**](/agents/cli/quickstart/) - Install the CLI and run your first agent conversation in any terminal -* [**Oz web app**](https://oz.warp.dev) - Create runs, manage schedules, browse skills, and configure integrations -* [**Oz CLI**](/reference/cli/) - Run agents from the command line, in CI, or on remote machines -* [**Oz API & SDK**](/reference/api-and-sdk/) - Programmatically create and monitor agent runs +* [**Agents in Warp**](/agents/getting-started/agents-in-warp/) - A tour of what agents can do, autonomy levels, and profiles +* [**Warp Agent CLI quickstart**](/agents/cli/quickstart/) - Install the CLI and run your first agent conversation +* [**Cloud agents quickstart**](/platform/quickstart/) - Run your first agent in the cloud +* [**Agent capabilities**](/agents/capabilities/) - Skills, planning, rules, MCP servers, and more +* [**Agent FAQs**](/agents/getting-started/faqs/) - Common questions about models, privacy, and limits --- -## Learn more - -* [Warp Agents overview](/agents/local-agents/overview/) - Interactive agents in Warp -* [Warp Agent CLI](/agents/cli/) - Run the Warp Agent from any terminal -* [Third-party CLI agents](/agents/cli-agents/overview/) - Claude Code, Codex, OpenCode, and more -* [Cloud Agents overview](/platform/) - Background agents for automation at scale -* [Agent Capabilities](/agents/capabilities/) - Skills, planning, MCP, rules, and more -* [Oz Platform](/platform/overview/) - CLI, API/SDK, orchestration, environments, and hosts -* [Environments](/platform/environments/) - Configure execution context for cloud agents -* [Integrations](/platform/integrations/) - Slack, Linear, GitHub Actions, and custom integrations -* [Skills as Agents](/platform/skills-as-agents/) - Run agents from reusable skill definitions -* [Managing Cloud Agents](/platform/managing-cloud-agents/) - Monitor and manage agent activity +## Open source + +Warp's client is open source under [AGPL v3](https://github.com/warpdotdev/warp/blob/master/LICENSE-AGPL), so the editor and terminal that host your agents are fully auditable. See [Contributing to Warp](/support-and-community/community/contributing/) for the source and contribution flow. From 1a68c757922a561cd7c0c8ef21b70d79a8da47d8 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Fri, 7 Aug 2026 09:09:16 -0600 Subject: [PATCH 07/14] docs: replace the two-mode section with three access surfaces The main lThe main lThe main lThe main lThe main lThe main lThe main lThe main ls" and defined local agents as running "directly in the Warp app". There was There was There was There was There was There was There was Then wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwHYC, the CLI is called out as a way to use the Warp Agent without the Warp terminal / ADE. Also drop the duplicated multi-model sentence (the page already has a Multi-model support section), widen "same agent, anywhere" to name all three surfacthree surfacthree surfacthree surfacthree surfacthree surfacthree sure is unchanged. Co-Authored-By: Warp Agent --- src/content/docs/index.mdx | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 72794522..71320e1a 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -32,26 +32,30 @@ Warp is where you work — a fast, modern terminal built for coding with agents. --- -## Oz: The orchestration platform for cloud agents +## Three ways to use the Warp Agent -Oz is the orchestration platform for cloud agents that powers all of Warp's intelligent features. Oz is designed to coordinate agents at scale—understanding your codebase, executing tasks autonomously, and adapting to your workflows. Oz is multi-model by design, giving you flexibility to choose the best LLM for each task. +The **Warp Agent** writes and edits code, debugs issues, runs commands, and works through multi-step tasks. You reach the same agent three ways, and your account, rules, skills, and model access carry across all of them. -Oz operates in two modes: +### In the Warp app -### Local agents - -Run directly in the Warp app for real-time, interactive coding assistance. +Real-time, interactive coding assistance alongside your terminal. * Write and refactor code across your codebase * Debug issues and fix errors * Run commands and interpret results * Plan and execute multi-step tasks -Local agents keep you in control. You can review changes, steer the agent mid-task, and approve actions before they execute. +You stay in control. Review changes, steer the agent mid-task, and approve actions before they execute. + +→ [Get started with agents in Warp](/agents/local-agents/overview/) + +### In any terminal, with the Warp Agent CLI + +The Warp Agent CLI is a standalone terminal program that runs the same agent without the Warp app. Run the `warp` command to start a conversation in whichever terminal you already use, over SSH, or on a machine where Warp isn't installed. -→ [Get started with local agents](/agents/local-agents/overview/) +→ [Get started with the Warp Agent CLI](/agents/cli/quickstart/) -### Cloud agents +### In the cloud, as a cloud agent Cloud agents run in the background on Warp's infrastructure (or your own) for automation at scale. @@ -64,13 +68,19 @@ Cloud agents are ideal for work that doesn't need your immediate attention, like → [Learn about cloud agents](/platform/) +### The platform behind them + +**Oz** is Warp's programmable platform for running and coordinating agents at scale. It provides the environments, triggers, integrations, orchestration, and observability that cloud agents run on, plus a CLI, API, and SDK. + +→ [Learn about the Oz platform](/platform/overview/) + --- ## How they work together Warp and Oz provide a unified experience across local and cloud development: -* **Same agent, anywhere**: Whether you're working interactively in Warp or running agents in the cloud, you're using the same underlying agent capabilities. +* **Same agent, anywhere**: Whether you're working in the Warp app, in another terminal through the Warp Agent CLI, or running agents in the cloud, you're using the same underlying agent capabilities. * **Seamless handoff**: Start a task in the cloud and take over locally in Warp when you want hands-on control, without losing progress or context. * **Shared context**: [Warp Drive](/knowledge-and-collaboration/warp-drive/), [Rules](/agents/capabilities/rules/), and [MCP servers](/agents/capabilities/mcp/) work across both local and cloud agents, so your team's knowledge and tools are always available. * **Team collaboration**: Share agent sessions, review agents' actions, and steer running tasks, regardless of who started them. @@ -104,6 +114,7 @@ Warp's AI features can be globally disabled in **Settings** > **Agents** > **War ## Next steps * [**Quickstart**](/quickstart/): Get Warp installed and start coding -* [**Warp Agents overview**](/agents/local-agents/overview/): Explore all AI features available in Warp +* [**Using the Warp Agent**](/agents/local-agents/overview/): Explore all AI features available in Warp +* [**Warp Agent CLI**](/agents/cli/): Run the Warp Agent in any terminal * [**Cloud Agents overview**](/platform/): Set up background automation * [**Oz Platform**](/platform/overview/): Learn about the CLI, API, SDK, and infrastructure From b520746efc73bf8c8fc3b76f8172a7455573bb1b Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Fri, 7 Aug 2026 09:09:54 -0600 Subject: [PATCH 08/14] docs: retitle the Warp Agents group landing and promote the CLI mention Three pages read as broad "here's the agent" pages: /agents/ ("Agents overview"), /agents/getting-started/agents-in-warp ("Agents in Warp"), and /agents/local-agents/overview ("Warp Agents overview"). The titles gave no hint that the first orients, the second teaches, and the third indexes. - Sidebar label becomes "Overview", matching every sibling group. The Warp Agent CLI and Third-Party CLI Agents groups already label their landing page this way; this was the only group landing repeating its own group name, so the sidebar read "WARP AGENTS > Warp Agents overview". - Page title becomes "Using the Warp Agent". Surface-neutral on purpose: this group contains Capabilities (Rules, Skills, MCP, planning), which are cross-surface and linked directly from the CLI docs, so a title like "Agents in the Warp app" would over-claim and collide with the existing "Agents in Warp" page. - Promote the CLI from one bullet in an eleven-item list to a short "Outside the Warp app" section. HYC reviewed the bran "Outside the Warp app" section. HYC reviewed the bran "Outside thention. - Update the one stale "Warp Agents overview" link label. No slug, path, or URL change, so no redirect. Co-Authored-By: Warp Agent --- .../agents/getting-started/agents-in-warp.mdx | 2 +- .../docs/agents/local-agents/overview.mdx | 16 +++++++++++----- src/sidebar.ts | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/content/docs/agents/getting-started/agents-in-warp.mdx b/src/content/docs/agents/getting-started/agents-in-warp.mdx index 0cef8d46..8e7d5d44 100644 --- a/src/content/docs/agents/getting-started/agents-in-warp.mdx +++ b/src/content/docs/agents/getting-started/agents-in-warp.mdx @@ -124,7 +124,7 @@ Cloud agents are ideal for work that doesn't need your immediate attention—PR ## Resources * [**Oz web app**](https://oz.warp.dev) - Create runs, manage schedules, browse skills, and configure integrations -* [**Warp Agents overview**](/agents/local-agents/overview/) - Detailed guide to working with agents in Warp +* [**Using the Warp Agent**](/agents/local-agents/overview/) - Detailed guide to working with agents in Warp * [**Warp Agent CLI**](/agents/cli/) - Run the Warp Agent from any terminal * [**Capabilities**](/agents/capabilities/) - All agent capabilities: planning, task lists, model choice, and more * [**Oz CLI**](/reference/cli/) - Run agents from the command line diff --git a/src/content/docs/agents/local-agents/overview.mdx b/src/content/docs/agents/local-agents/overview.mdx index b9dc46b5..09785a58 100644 --- a/src/content/docs/agents/local-agents/overview.mdx +++ b/src/content/docs/agents/local-agents/overview.mdx @@ -1,9 +1,8 @@ --- -title: Warp Agents overview +title: Using the Warp Agent description: >- - Powerful AI features like agents, code review, voice, and active AI - recommendations, fully integrated into the Warp Agentic Development - Environment. + Agents, code review, voice, and active AI recommendations, fully integrated + into the Warp Agentic Development Environment. --- Warp's local agents are interactive agents embedded directly in the terminal that help you write code, debug issues, run commands, and automate development tasks using natural language. Agents operate with full context from your codebase, Warp Drive, and connected tools, while you stay in control of every action. @@ -20,6 +19,14 @@ These features send input data to various LLM providers through their API. Warp Warp's client is open source under [AGPL v3](https://github.com/warpdotdev/warp/blob/master/LICENSE-AGPL) at [`warpdotdev/warp`](https://github.com/warpdotdev/warp). The agent surface you're reading about is built in the open — see [Contributing to Warp](/support-and-community/community/contributing/) to read the code, file issues, or shape the roadmap. +## Outside the Warp app + +The same agent runs outside the Warp app. The [Warp Agent CLI](/agents/cli/) is a standalone terminal program that starts an agent conversation from the `warp` command, so you can use it in any terminal emulator, over SSH, or on a machine where the Warp app isn't installed. Your rules, skills, and model access carry over, and conversations sync to your Warp account. + +The capabilities below apply to the agent wherever it runs. Behavior that is specific to the CLI is covered in the [Warp Agent CLI](/agents/cli/) section. + +→ [Get started with the Warp Agent CLI](/agents/cli/quickstart/) + ## What you can do with agents This section covers how to interact with Warp's agents and the capabilities available during agent conversations: @@ -32,7 +39,6 @@ This section covers how to interact with Warp's agents and the capabilities avai * [Interactive Code Review](/agents/local-agents/interactive-code-review/) - Review agent-generated diffs, leave inline comments, and have the agent address your feedback. * [Task Lists](/agents/capabilities/task-lists/) - Track complex workflows with automatic task lists that update progress in real time. * [Web Search](/agents/capabilities/web-search/) - Allow agents to search the web for up-to-date information. -* [Warp Agent CLI](/agents/cli/) - Run the same Warp Agent outside the Warp app, in any terminal. * [Third-party CLI agents](/agents/cli-agents/overview/) - Run third-party CLI agents like Claude Code and Codex with Warp's built-in agent toolbelt. * [Active AI Recommendations](/agents/local-agents/active-ai/) - Get proactive fix recommendations based on errors and outputs. * [Voice](/agents/local-agents/interacting-with-agents/voice/) - Talk to Warp's agent using voice commands. diff --git a/src/sidebar.ts b/src/sidebar.ts index 8b8f4022..de92280e 100644 --- a/src/sidebar.ts +++ b/src/sidebar.ts @@ -250,7 +250,7 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ { label: 'Warp Agents', items: [ - { slug: 'agents/local-agents/overview', label: 'Warp Agents overview' }, + { slug: 'agents/local-agents/overview', label: 'Overview' }, { label: 'Capabilities', collapsed: true, From 0217ffc6b4db249299bb24b3e55f7582e212375b Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Mon, 10 Aug 2026 11:50:26 -0600 Subject: [PATCH 09/14] docs: resolve the self-contradicting rule for capitalizing "agent" AGENTS.md contradicted itself 19 lines apart, which is why agent naming has drifted across the docs rather than being wrong in one place: line 634: "Agent or Agents (capitalized when referring to Warp's AI agents)" line 653: "Use lowercase 'agent' in most contexts; use 'Warp Agent' only when referring specifically to the built-in Warp harness." Writers following the guide could land on either convention and both were "correct". Line 634 was also the stale one: it used "AI agents", which the same file elsewhere tells us to avoid. Settle on one rule, and add a dedicated section for it: - "Warp Agent" is a proper noun for the built-in harness. - "agent" / "agents" are lowercase everywhere else. - Proper nouns keep their capital A: Agent Mode, Agent Profiles, Agent Memory, Agent Management Panel, Agent API, Warp Agent CLI. - Retire "Warp's agent" and "Warp's agents". This is the ambiguous middle ground and the main source of drift; it reads as neither the proper noun nor the generic term. Also record that Oz is the platform, not the agent, since conflating them teaches readers the wrong model. Mirrored in .agents/references/terminology.md. Co-Authored-By: Warp Agent --- .agents/references/terminology.md | 4 +++- AGENTS.md | 22 +++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.agents/references/terminology.md b/.agents/references/terminology.md index 98e7489e..d1e8bc00 100644 --- a/.agents/references/terminology.md +++ b/.agents/references/terminology.md @@ -134,7 +134,9 @@ For the summary of the most critical terms (core features, Oz terms, terms to av ### Warp Agent vs Oz -- **Warp Agent** — Warp's built-in agent harness. Use "Warp Agent" when specifically referring to the built-in harness, especially when contrasting with third-party agents (Claude Code, Codex, etc.), or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). +- **Warp Agent** — Warp's built-in agent harness. Capitalized, singular, treated as a proper noun. Use "Warp Agent" when specifically referring to the built-in harness, especially when contrasting with third-party agents (Claude Code, Codex, etc.), or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). Use lowercase "agent" / "agents" everywhere else. + *Usage note:* Avoid "Warp's agent" and "Warp's agents" — the ambiguous middle ground, and the main source of capitalization drift in the docs. Rewrite as "the Warp Agent" (the built-in harness), "agents" or "agents in Warp" (generic), or "the Warp Agent harness" (the server-side runtime). +- **Oz is the platform, not the agent.** Never introduce Oz as "Warp's agent" or equate the two. Oz runs and coordinates agents; the Warp Agent is the agent. - **Warp Agent CLI** — The standalone terminal program (the `warp` binary) that runs the Warp Agent in any terminal, including over SSH and on machines without the Warp app. Documented at `/agents/cli/`. *Usage note:* Distinct from the Oz CLI (the `oz` binary), which runs and manages cloud agents. At the next launch (approximately August 18, 2026) the Oz CLI is retired and wrapped into the Warp Agent CLI, leaving a single CLI under this name. Until that ships, keep the two clearly separate in prose; afterwards, "Warp Agent CLI" covers both. - **Oz** — Warp's programmable platform for running and coordinating agents at scale diff --git a/AGENTS.md b/AGENTS.md index 0cd843e1..8a034d51 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -631,7 +631,7 @@ Use these terms consistently throughout all documentation. For the full canonica Product feature names retain their standard capitalization. Match the exact casing shown in the UI. - **Warp** (not "Warp Terminal" unless specifically distinguishing) -- **Agent** or **Agents** (capitalized when referring to Warp's AI agents) +- **agent** / **agents** (lowercase) - the generic concept, covering any agent on any surface. See [Capitalizing "agent"](#capitalizing-agent) for the full rule. - **Agent Mode** (not "agent mode" or "Agent-mode") - **Terminal and Agent modes** - The two distinct modes in Warp: terminal mode (for shell commands) and Agent Mode (for multi-turn agent conversations). Use "Terminal and Agent modes" on first reference; use "terminal mode" or "Agent Mode" individually in subsequent references. Do not use "agent modality" or "Agent Modality" — this was an internal name that is not user-facing. - **Cloud Agents** (capitalized as a product section/feature name; lowercase "cloud agents" in most contexts) @@ -642,10 +642,30 @@ Product feature names retain their standard capitalization. Match the exact casi - **Agent Memory** - Persistent, cross-harness memory layer for Oz agents that captures durable facts, decisions, and outcomes across conversations (currently in research preview). Capitalize as a feature name; use lowercase "memory store" for individual stores. - **Handoff** - Feature for moving agent work between a local Warp session and the cloud, or continuing a finished cloud run; supports local-to-cloud, cloud-to-cloud, and cloud-to-local. Capitalize as a feature name; lowercase "hand off" only as a verb. +### Capitalizing "agent" + +This is the single most drifted term in the docs, so the rule is narrow on purpose. + +- **Warp Agent** - Capitalized, singular, treated as a proper noun. Use it for Warp's built-in agent harness, especially when contrasting with third-party agents (Claude Code, Codex, and so on) or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). +- **agent** / **agents** - Lowercase everywhere else. This is the generic concept and covers any agent on any surface, including cloud agents and third-party CLI agents. +- **Proper nouns keep their capital A.** `Agent Mode`, `Agent Profiles`, `Agent Memory`, `Agent Management Panel`, `Agent API`, and `Warp Agent CLI` are feature names, not instances of the generic term. + +❌ **Avoid "Warp's agent" and "Warp's agents".** This is the ambiguous middle ground and the main source of drift. It reads as neither the proper noun nor the generic term, so it blurs exactly the distinction that matters. Rewrite instead: + +- Referring to the built-in harness → "the Warp Agent" +- Referring to agents generally → "agents" or "agents in Warp" +- Referring to the server-side runtime → "the Warp Agent harness" + +✅ "The Warp Agent can run commands and edit files." (the built-in harness) +✅ "Profiles control how agents behave." (generic) +❌ "Profiles control how Warp's agents behave." (ambiguous) +❌ "Warp's agent can run commands." (ambiguous) + ### Oz terminology #### Warp Agent vs Oz - **Warp Agent** — Warp's built-in agent harness. Use "Warp Agent" when specifically referring to the built-in harness, especially when contrasting with third-party agents (Claude Code, Codex, etc.), or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). +- **Oz is the platform, not the agent.** Never introduce Oz as "Warp's agent" or equate the two. Oz runs and coordinates agents; the Warp Agent is the agent. - **Oz** — Warp's programmable platform for running and coordinating agents at scale - There is typically one Warp environment per user session. Oz can run many agents concurrently, across machines, repos, and teams. From 26b2f5d4dd1aedf72f69920615912a347ad2bf63 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Mon, 10 Aug 2026 12:50:30 -0600 Subject: [PATCH 10/14] docs: apply the agent naming rule across the Agents tab Follows the rule settled in the previous commit. Resolves every ambiguous "Warp's agent(s)" in the Agents tab and the main landing page, plus two related problems the review surfaced. 36 occurrences resolved by meaning, not find-and-replace, because they carried three different senses: - The built-in harness, singular -> "the Warp Agent". e.g. "Full Terminal Use lets the Warp Agent operate directly inside interactive terminal applications" - Agents generically -> lowercase "agents" or "agents in Warp". e.g. "Agent Profiles let you configure how agents behave" - The server-side runtime -> "the Warp Agent harness". e.g. "The Warp Agent harness, which runs on Warp's backend" Two related fixes: - terminal-and-agent-modes.mdx described "Oz, Warp's agent". Oz is the platform, not the agent. This was a factual terminology error, not style drif drif drif drif drif drif drif drif drif drif drif drif drif drif drif drif drical capability sentences in different registers, one click apar sentences in different registers, one click apar sentences ie reframe i sentences in different registers, one click apar sentences in diffe routes to the three surfaces; agents-i agents-i agents-i agents-i agents-i agents-i agents-i agenverview. Note: the initial audit found 33 occurrences using a straight apostrophe. Three moThree moThree moThree moThree moThree moThree moThree moThree moThrVerified no protected proper noun was daThree moThree moThree moThree moThree moThree moThree moThreeLI (37) are unchanged. Still outstanding, deferred by decisionStill outstanding, deferred by decisionStill outstts" aStill outstanding, deferred by decisionStill outstandingle. That sweep is mechanical and reviews better on its own. Co-Authored-By: Warp Agent --- .../agents/capabilities/agent-profiles-permissions.mdx | 2 +- .../docs/agents/capabilities/computer-use/index.mdx | 2 +- .../docs/agents/capabilities/full-terminal-use.mdx | 6 +++--- src/content/docs/agents/capabilities/index.mdx | 4 ++-- src/content/docs/agents/capabilities/mcp.mdx | 4 ++-- src/content/docs/agents/capabilities/rules.mdx | 2 +- src/content/docs/agents/capabilities/task-lists.mdx | 2 +- src/content/docs/agents/cli-agents/claude-code.mdx | 2 +- src/content/docs/agents/cli-agents/codex.mdx | 2 +- src/content/docs/agents/cli-agents/opencode.mdx | 2 +- src/content/docs/agents/cli/index.mdx | 2 +- .../docs/agents/getting-started/agents-in-warp.mdx | 6 +++--- src/content/docs/agents/getting-started/faqs.mdx | 2 +- .../docs/agents/inference/bring-your-own-api-key.mdx | 6 +++--- .../docs/agents/inference/custom-inference-endpoint.mdx | 8 ++++---- src/content/docs/agents/inference/grok-subscription.mdx | 4 ++-- src/content/docs/agents/local-agents/code-diffs.mdx | 2 +- src/content/docs/agents/local-agents/generate.mdx | 2 +- .../agents/local-agents/interacting-with-agents/index.mdx | 2 +- .../interacting-with-agents/terminal-and-agent-modes.mdx | 2 +- src/content/docs/agents/local-agents/overview.mdx | 4 ++-- src/content/docs/index.mdx | 4 ++-- 22 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/content/docs/agents/capabilities/agent-profiles-permissions.mdx b/src/content/docs/agents/capabilities/agent-profiles-permissions.mdx index f7a564c9..0880a35c 100644 --- a/src/content/docs/agents/capabilities/agent-profiles-permissions.mdx +++ b/src/content/docs/agents/capabilities/agent-profiles-permissions.mdx @@ -6,7 +6,7 @@ description: >- --- import { Tabs, TabItem } from '@astrojs/starlight/components'; -Agent Profiles let you configure how Warp's agents behave in different situations, including autonomy level, base model, tool access, and command permissions. Create multiple profiles for different workflows, control which commands run automatically, and set MCP server access rules per profile. +Agent Profiles let you configure how agents behave in different situations, including autonomy level, base model, tool access, and command permissions. Create multiple profiles for different workflows, control which commands run automatically, and set MCP server access rules per profile. ## Agent Profiles diff --git a/src/content/docs/agents/capabilities/computer-use/index.mdx b/src/content/docs/agents/capabilities/computer-use/index.mdx index 2adc545d..11ebbcbe 100644 --- a/src/content/docs/agents/capabilities/computer-use/index.mdx +++ b/src/content/docs/agents/capabilities/computer-use/index.mdx @@ -9,7 +9,7 @@ description: >- import { VARS } from '@data/vars'; -Computer Use enables Warp's agents to interact with desktop environments. The agent can see what's displayed on screen, click and drag, type text, use keyboard shortcuts, and perform other GUI interactions—all within a secure, isolated sandbox. +Computer Use enables agents to interact with desktop environments. The agent can see what's displayed on screen, click and drag, type text, use keyboard shortcuts, and perform other GUI interactions—all within a secure, isolated sandbox. A key use case is **testing UI changes** with a self-contained feedback loop, where the agent can verify that your code changes produce the expected visual and behavioral results without requiring manual testing. diff --git a/src/content/docs/agents/capabilities/full-terminal-use.mdx b/src/content/docs/agents/capabilities/full-terminal-use.mdx index 91fd5d8e..141c3f1a 100644 --- a/src/content/docs/agents/capabilities/full-terminal-use.mdx +++ b/src/content/docs/agents/capabilities/full-terminal-use.mdx @@ -1,13 +1,13 @@ --- title: Full Terminal Use description: >- - Full Terminal Use means Warp's agents can interact with active terminal apps + Full Terminal Use means agents can interact with active terminal apps to monitor live output and run commands. --- import { Tabs, TabItem } from '@astrojs/starlight/components'; import VideoEmbed from '@components/VideoEmbed.astro'; -Full Terminal Use lets Warp's agent operate directly inside interactive terminal applications like database shells, debuggers, text editors, and long-running servers. The agent can see the live terminal buffer, write commands, respond to prompts, and hand control back to you at any time. +Full Terminal Use lets the Warp Agent operate directly inside interactive terminal applications like database shells, debuggers, text editors, and long-running servers. The agent can see the live terminal buffer, write commands, respond to prompts, and hand control back to you at any time. The agent can see the live terminal buffer (terminal state), write to the PTY to run commands, respond to prompts, and continue working inside the running process while you stay in control. @@ -15,7 +15,7 @@ The agent can see the live terminal buffer (terminal state), write to the PTY to ## Overview -With Full Terminal Use, Warp’s agent can attach to interactive tools like `psql`, `vim`, `python`, `gdb`, `top`, or your dev server, read the terminal output as it changes, and interact with the application as if you were typing. +With Full Terminal Use, the Warp Agent can attach to interactive tools like `psql`, `vim`, `python`, `gdb`, `top`, or your dev server, read the terminal output as it changes, and interact with the application as if you were typing. You can either ask the agent to start an interactive program, or you can start it yourself and then tag the agent in once the tool is already running. In both cases, the agent sees the same terminal buffer (and PTY session) you do and can act on it. diff --git a/src/content/docs/agents/capabilities/index.mdx b/src/content/docs/agents/capabilities/index.mdx index 3d1fc015..f91ff333 100644 --- a/src/content/docs/agents/capabilities/index.mdx +++ b/src/content/docs/agents/capabilities/index.mdx @@ -5,7 +5,7 @@ description: >- what context they have access to, and how they execute tasks. --- -Agent capabilities are the core building blocks that define how Warp's agents operate, including the context sources agents can access, the rules that guide their behavior, the tools they can use, and the models they run on. Configure these capabilities to match your workflows and preferences. +Agent capabilities are the core building blocks that define how agents operate, including the context sources agents can access, the rules that guide their behavior, the tools they can use, and the models they run on. Configure these capabilities to match your workflows and preferences. ## Capabilities in this section @@ -16,7 +16,7 @@ Agent capabilities are the core building blocks that define how Warp's agents op * [Rules](/agents/capabilities/rules/) - Define global and project-level guidelines that shape agent behavior and responses. * [Full Terminal Use](/agents/capabilities/full-terminal-use/) - Let the agent drive interactive terminal apps, seeing live output and running commands. * [Computer Use](/agents/capabilities/computer-use/) - Let agents interact with desktop environments by taking screenshots, clicking, typing, and controlling the GUI. -* [MCP](/agents/capabilities/mcp/) - Connect external data sources and tools to Warp's agents via the Model Context Protocol. +* [MCP](/agents/capabilities/mcp/) - Connect external data sources and tools to agents via the Model Context Protocol. * [Codebase Context](/agents/capabilities/codebase-context/) - Let agents understand your codebase through semantic indexing of your Git-tracked files. * [Agent Profiles & Permissions](/agents/capabilities/agent-profiles-permissions/) - Control what permissions and autonomy agents have to run commands and apply changes. * [Web Search](/agents/capabilities/web-search/) - Allow agents to search the web for up-to-date information. diff --git a/src/content/docs/agents/capabilities/mcp.mdx b/src/content/docs/agents/capabilities/mcp.mdx index 4f83ef75..6dcf9e6f 100644 --- a/src/content/docs/agents/capabilities/mcp.mdx +++ b/src/content/docs/agents/capabilities/mcp.mdx @@ -107,7 +107,7 @@ To add multiple MCP servers, you can click the **+ Add** button then paste in a Compared to manually adding a server in the Warp settings, file-based servers are defined in config files that Warp detects and can spawn automatically. They offer a few additional benefits: -* **Configurable directly with an agent** - Use the [bundled skill](#using-agent-add-mcp) `/agent-add-mcp` so Warp's agent can add or update an MCP server without leaving the conversation. +* **Configurable directly with an agent** - Use the [bundled skill](#using-agent-add-mcp) `/agent-add-mcp` so the Warp Agent can add or update an MCP server without leaving the conversation. * **Inherited across providers and repos** - Warp reads `.warp/.mcp.json` files and also picks up config from third-party agent providers (Claude Code, Codex, and others). The same server definition follows you across tools and repos. #### Supported providers @@ -143,7 +143,7 @@ Project-scoped servers from any provider must be toggled on individually from th #### Using `/agent-add-mcp` -The built-in `/agent-add-mcp` skill lets Warp's agent create or update file-based MCP server definitions. Choose whether to save globally or in the current project — the skill writes the server definition to the matching file: +The built-in `/agent-add-mcp` skill lets the Warp Agent create or update file-based MCP server definitions. Choose whether to save globally or in the current project — the skill writes the server definition to the matching file: * **Global:** `~/.warp/.mcp.json` * **Project-scoped:** `{repo_root}/.warp/.mcp.json` diff --git a/src/content/docs/agents/capabilities/rules.mdx b/src/content/docs/agents/capabilities/rules.mdx index 9eb1ac08..af2493fb 100644 --- a/src/content/docs/agents/capabilities/rules.mdx +++ b/src/content/docs/agents/capabilities/rules.mdx @@ -3,7 +3,7 @@ title: Rules for agents sidebar: label: "Rules" description: >- - Create reusable Global or Project Rules to ensure Warp’s agents follow your + Create reusable Global or Project Rules to ensure agents follow your coding standards, project conventions, and personal preferences. --- import VideoEmbed from '@components/VideoEmbed.astro'; diff --git a/src/content/docs/agents/capabilities/task-lists.mdx b/src/content/docs/agents/capabilities/task-lists.mdx index effdbfb4..f15e8ace 100644 --- a/src/content/docs/agents/capabilities/task-lists.mdx +++ b/src/content/docs/agents/capabilities/task-lists.mdx @@ -6,7 +6,7 @@ description: >- time. --- -Task Lists let Warp's agent automatically break down complex requests into clear, trackable steps. When a request requires multiple actions, the agent creates a structured list, executes each step in order, and tracks progress in real time. No configuration is needed—the agent detects and creates task lists automatically. +Task Lists let the Warp Agent automatically break down complex requests into clear, trackable steps. When a request requires multiple actions, the agent creates a structured list, executes each step in order, and tracks progress in real time. No configuration is needed—the agent detects and creates task lists automatically.
![An example of a task list in progress.](../../../../assets/agent-platform/in-progress-tasklist.png) diff --git a/src/content/docs/agents/cli-agents/claude-code.mdx b/src/content/docs/agents/cli-agents/claude-code.mdx index 42d11716..a0d0441b 100644 --- a/src/content/docs/agents/cli-agents/claude-code.mdx +++ b/src/content/docs/agents/cli-agents/claude-code.mdx @@ -59,7 +59,7 @@ For plugin source and updates, see the [claude-code-warp GitHub repository](http ## Supported Warp features -Claude Code supports the full set of Warp's agent integration features: +Claude Code supports Warp's full set of agent integration features: * **Agent notifications** - Receive in-app and desktop alerts when Claude Code needs your attention. The notification UI displays your current git branch alongside agent status. * **Rich input editor** - Press `Ctrl-G` to open an expanded input editor for composing longer prompts. diff --git a/src/content/docs/agents/cli-agents/codex.mdx b/src/content/docs/agents/cli-agents/codex.mdx index 79e771f6..7e45948b 100644 --- a/src/content/docs/agents/cli-agents/codex.mdx +++ b/src/content/docs/agents/cli-agents/codex.mdx @@ -43,7 +43,7 @@ If you point `codex-warp` at a local (non-Git) marketplace source, Warp leaves t ## Supported Warp features -Codex supports the full set of Warp's agent integration features: +Codex supports Warp's full set of agent integration features: * **Agent notifications** - Receive in-app and desktop alerts when Codex needs your attention. Requires the Warp plugin for Codex (see [Setting up notifications](#setting-up-notifications)). * **Rich input editor** - Press `Ctrl-G` to open an expanded input editor for composing longer prompts. diff --git a/src/content/docs/agents/cli-agents/opencode.mdx b/src/content/docs/agents/cli-agents/opencode.mdx index f7b799a1..78c77825 100644 --- a/src/content/docs/agents/cli-agents/opencode.mdx +++ b/src/content/docs/agents/cli-agents/opencode.mdx @@ -31,7 +31,7 @@ For plugin source and updates, see the [opencode-warp GitHub repository](https:/ ## Supported Warp features -OpenCode supports the full set of Warp's agent integration features: +OpenCode supports Warp's full set of agent integration features: * **Agent notifications** - Receive in-app and desktop alerts when OpenCode needs your attention. The notification UI displays your current git branch alongside agent status. * **Rich input editor** - Press `Ctrl-G` to open an expanded input editor for composing longer prompts. diff --git a/src/content/docs/agents/cli/index.mdx b/src/content/docs/agents/cli/index.mdx index 9e0a36d1..b69df6f3 100644 --- a/src/content/docs/agents/cli/index.mdx +++ b/src/content/docs/agents/cli/index.mdx @@ -1,7 +1,7 @@ --- title: "Warp Agent CLI overview" description: >- - Run Warp's agent in any terminal with the Warp Agent CLI, prompting the agent, + Run the Warp Agent in any terminal with the Warp Agent CLI, prompting the agent, running shell commands, and handing work off to cloud agents. --- import { VARS } from '@data/vars'; diff --git a/src/content/docs/agents/getting-started/agents-in-warp.mdx b/src/content/docs/agents/getting-started/agents-in-warp.mdx index 8e7d5d44..dfbd6501 100644 --- a/src/content/docs/agents/getting-started/agents-in-warp.mdx +++ b/src/content/docs/agents/getting-started/agents-in-warp.mdx @@ -1,12 +1,12 @@ --- title: Agents in Warp description: >- - Warp's agents are capable collaborators that help you write code, debug - issues, and complete terminal workflows, all from natural language prompts. + Learn how agents work in Warp: what they can do, how to control their + autonomy and permissions, and how to give them the right context. --- import VideoEmbed from '@components/VideoEmbed.astro'; -Warp's agents help you write code, debug issues, and complete terminal workflows from natural language prompts. They operate with full context from your codebase, Warp Drive, and connected tools while you control their autonomy, permissions, and model choices. +This page walks through working with agents in Warp: what they can do, how to control their autonomy and permissions with profiles, and how to give them the context they need. For an overview of the agent and the different ways to reach it, see [Agents overview](/agents/). diff --git a/src/content/docs/agents/getting-started/faqs.mdx b/src/content/docs/agents/getting-started/faqs.mdx index 8ca9520f..c437d0d7 100644 --- a/src/content/docs/agents/getting-started/faqs.mdx +++ b/src/content/docs/agents/getting-started/faqs.mdx @@ -7,7 +7,7 @@ description: >- models, privacy practices, credit limits, billing, and usage guidelines. --- -Answers to frequently asked questions about Warp's agents, including supported models, data privacy, credit limits, billing, and common error messages. For billing-specific questions, see the pricing FAQs. +Answers to frequently asked questions about agents in Warp, including supported models, data privacy, credit limits, billing, and common error messages. For billing-specific questions, see the pricing FAQs. ## General diff --git a/src/content/docs/agents/inference/bring-your-own-api-key.mdx b/src/content/docs/agents/inference/bring-your-own-api-key.mdx index f22e17b8..f0e4622e 100644 --- a/src/content/docs/agents/inference/bring-your-own-api-key.mdx +++ b/src/content/docs/agents/inference/bring-your-own-api-key.mdx @@ -6,7 +6,7 @@ description: >- --- import VideoEmbed from '@components/VideoEmbed.astro'; -Warp supports **Bring Your Own API Key (BYOK)** for users who want to connect Warp's agents to their own Anthropic, OpenAI, or Google API accounts. +Warp supports **Bring Your Own API Key (BYOK)** for users who want to connect agents to their own Anthropic, OpenAI, or Google API accounts. This lets you use your own API keys for model access, giving you control over model selection, billing, and data routing. See [Model Choice](/agents/inference/model-choice/) for a list of supported models. For xAI's Grok models, you connect a [SuperGrok subscription](/agents/inference/grok-subscription/) instead of adding an API key. @@ -46,13 +46,13 @@ When you add your own model API keys in Warp, those keys are stored **only on yo When you send a prompt using a model with the **key icon**: 1. Your local Warp client pulls your API key from your device's secure storage and sends it up to Warp's backend along with your prompt. -2. Warp's agent harness, which runs on Warp's backend, assembles the full request (system instructions, conversation context, tools) and uses your key in-flight to call your chosen model provider (Anthropic, OpenAI, or Google). +2. The Warp Agent harness, which runs on Warp's backend, assembles the full request (system instructions, conversation context, tools) and uses your key in-flight to call your chosen model provider (Anthropic, OpenAI, or Google). 3. The provider's response streams back through Warp's backend to your client. Your API key passes through Warp's servers each time you send a request, but Warp never stores it there — it's used only in-flight to call the provider, then discarded. :::note -**Why does the request route through Warp's backend?** Warp's agent harness runs server-side — the same runtime that powers [Agent Mode](/agents/local-agents/interacting-with-agents/terminal-and-agent-modes/) with Warp-billed models. BYOK swaps the credential used to call the provider; it does not change where the harness runs. +**Why does the request route through Warp's backend?** The Warp Agent harness runs server-side — the same runtime that powers [Agent Mode](/agents/local-agents/interacting-with-agents/terminal-and-agent-modes/) with Warp-billed models. BYOK swaps the credential used to call the provider; it does not change where the harness runs. ::: :::caution diff --git a/src/content/docs/agents/inference/custom-inference-endpoint.mdx b/src/content/docs/agents/inference/custom-inference-endpoint.mdx index f3d47c47..f3d57e09 100644 --- a/src/content/docs/agents/inference/custom-inference-endpoint.mdx +++ b/src/content/docs/agents/inference/custom-inference-endpoint.mdx @@ -1,11 +1,11 @@ --- title: Custom inference endpoint description: >- - Connect Warp's agents to any OpenAI-compatible inference endpoint — + Connect agents to any OpenAI-compatible inference endpoint — OpenRouter, LiteLLM, z.ai, or an internal gateway exposed at a public URL. --- -Warp supports **custom inference endpoints** for users who want to power Warp's agents with any OpenAI-compatible inference endpoint — a model router, hosted gateway, or internal infrastructure they already run. +Warp supports **custom inference endpoints** for users who want to power agents with any OpenAI-compatible inference endpoint — a model router, hosted gateway, or internal infrastructure they already run. This lets you route AI requests through your preferred provider, run inference behind your own gateway, or use a router like OpenRouter or LiteLLM, while keeping the agent experience inside Warp. @@ -36,13 +36,13 @@ When you configure a custom inference endpoint, your endpoint URL, model identif When you send a prompt using an endpoint-routed model: 1. Your local Warp client pulls your endpoint URL and API key from your device's secure storage and sends them up to Warp's backend along with your prompt. -2. Warp's agent harness, which runs on Warp's backend, assembles the full request (system instructions, conversation context, tools) and uses your key in-flight to call your configured endpoint. +2. The Warp Agent harness, which runs on Warp's backend, assembles the full request (system instructions, conversation context, tools) and uses your key in-flight to call your configured endpoint. 3. Your endpoint's response streams back through Warp's backend to your client. Your API key passes through Warp's servers each time you send a request, but Warp never stores it there — it's used only in-flight to call your endpoint, then discarded. :::note -**Why does the request route through Warp's backend?** Warp's agent harness runs server-side — the same runtime that powers [Agent Mode](/agents/local-agents/interacting-with-agents/terminal-and-agent-modes/) with Warp-billed models and [BYOK](/agents/inference/bring-your-own-api-key/). A custom inference endpoint swaps the upstream destination and credential; it does not change where the harness runs. +**Why does the request route through Warp's backend?** The Warp Agent harness runs server-side — the same runtime that powers [Agent Mode](/agents/local-agents/interacting-with-agents/terminal-and-agent-modes/) with Warp-billed models and [BYOK](/agents/inference/bring-your-own-api-key/). A custom inference endpoint swaps the upstream destination and credential; it does not change where the harness runs. ::: :::caution diff --git a/src/content/docs/agents/inference/grok-subscription.mdx b/src/content/docs/agents/inference/grok-subscription.mdx index 03f73129..1e393db0 100644 --- a/src/content/docs/agents/inference/grok-subscription.mdx +++ b/src/content/docs/agents/inference/grok-subscription.mdx @@ -6,7 +6,7 @@ description: >- Grok Build. --- -Warp lets you connect your **SuperGrok subscription** to use Grok models in Warp's agents through your xAI account. If you already subscribe to Grok, you can run Grok models in Warp without consuming your Warp [credits](/support-and-community/plans-and-billing/credits/). X Premium subscriptions that include Grok access work the same way: you sign in to your xAI account, and xAI determines which subscription tiers are eligible and how much usage they include. +Warp lets you connect your **SuperGrok subscription** to use Grok models with agents in Warp through your xAI account. If you already subscribe to Grok, you can run Grok models in Warp without consuming your Warp [credits](/support-and-community/plans-and-billing/credits/). X Premium subscriptions that include Grok access work the same way: you sign in to your xAI account, and xAI determines which subscription tiers are eligible and how much usage they include. Connecting a subscription works like [Bring Your Own API Key (BYOK)](/agents/inference/bring-your-own-api-key/), except you sign in to your xAI account instead of pasting an API key. There is no xAI API key field in Warp today — the subscription is the way to bring your own Grok access. @@ -21,7 +21,7 @@ When you connect your subscription, Warp opens your browser to xAI's consent scr When you send a prompt with a Grok model selected and a subscription connected: 1. Your local Warp client sends the access token to Warp's backend along with your prompt. -2. Warp's agent harness assembles the full request and uses your token in-flight to call xAI, authenticating as your xAI account instead of Warp's. +2. The Warp Agent harness assembles the full request and uses your token in-flight to call xAI, authenticating as your xAI account instead of Warp's. 3. xAI's response streams back through Warp's backend to your client. Your token passes through Warp's servers on each request but is used only in-flight to call xAI, then discarded — the same model as [BYOK](/agents/inference/bring-your-own-api-key/#how-byok-works). diff --git a/src/content/docs/agents/local-agents/code-diffs.mdx b/src/content/docs/agents/local-agents/code-diffs.mdx index 84004f41..9792fa76 100644 --- a/src/content/docs/agents/local-agents/code-diffs.mdx +++ b/src/content/docs/agents/local-agents/code-diffs.mdx @@ -8,7 +8,7 @@ description: >- --- import VideoEmbed from '@components/VideoEmbed.astro'; -When Warp's agent generates code changes, they appear as visual diffs in a built-in editor. Review proposed changes line by line, refine them with natural language, make manual edits, or accept them to apply the modifications to your files. +When the Warp Agent generates code changes, they appear as visual diffs in a built-in editor. Review proposed changes line by line, refine them with natural language, make manual edits, or accept them to apply the modifications to your files. ## Reviewing code diffs diff --git a/src/content/docs/agents/local-agents/generate.mdx b/src/content/docs/agents/local-agents/generate.mdx index ea18a237..ad6637f6 100644 --- a/src/content/docs/agents/local-agents/generate.mdx +++ b/src/content/docs/agents/local-agents/generate.mdx @@ -41,7 +41,7 @@ Type `#` on the command-line input to generate command suggestions. ### \[Legacy] Generate text and contextual suggestions in interactive CLIs :::caution -**Our legacy Generate feature which works in interactive CLIs has been replaced by** [Full Terminal Use](/agents/capabilities/full-terminal-use/)**, where Warp's agent can now run and control long-running or full-screen terminal applications**.\ +**Our legacy Generate feature which works in interactive CLIs has been replaced by** [Full Terminal Use](/agents/capabilities/full-terminal-use/)**, where the Warp Agent can now run and control long-running or full-screen terminal applications**.\ The agent can provide input when prompted, navigate interactive screens, and continue execution without stalling. ::: diff --git a/src/content/docs/agents/local-agents/interacting-with-agents/index.mdx b/src/content/docs/agents/local-agents/interacting-with-agents/index.mdx index 9a94bc90..2095b83f 100644 --- a/src/content/docs/agents/local-agents/interacting-with-agents/index.mdx +++ b/src/content/docs/agents/local-agents/interacting-with-agents/index.mdx @@ -50,7 +50,7 @@ You don't have to wait for the agent to finish before lining up your next prompt #### Agent tips in the input -While Warp’s agent is thinking and processing your request, Warp may surface short tips with helpful workflows and ways to use Warp. These tips appear under the Warping indicator. +While the Warp Agent is thinking and processing your request, Warp may surface short tips with helpful workflows and ways to use Warp. These tips appear under the Warping indicator. ![Agent tips appearing under the Warping indicator while the agent processes a request.](../../../../../assets/agent-platform/agent-tips.png) diff --git a/src/content/docs/agents/local-agents/interacting-with-agents/terminal-and-agent-modes.mdx b/src/content/docs/agents/local-agents/interacting-with-agents/terminal-and-agent-modes.mdx index ec2cc7f2..b6d97513 100644 --- a/src/content/docs/agents/local-agents/interacting-with-agents/terminal-and-agent-modes.mdx +++ b/src/content/docs/agents/local-agents/interacting-with-agents/terminal-and-agent-modes.mdx @@ -6,7 +6,7 @@ description: >- --- import VideoEmbed from '@components/VideoEmbed.astro'; -Warp provides two distinct modes: a clean terminal for running shell commands, and a dedicated conversation view for multi-turn interactions with Oz, Warp's agent. Terminal mode keeps the interface minimal by default, while Agent Mode surfaces full controls for model selection, voice input, image attachments, and conversation management. +Warp provides two distinct modes: a clean terminal for running shell commands, and a dedicated conversation view for multi-turn interactions with the Warp Agent. Terminal mode keeps the interface minimal by default, while Agent Mode surfaces full controls for model selection, voice input, image attachments, and conversation management. diff --git a/src/content/docs/agents/local-agents/overview.mdx b/src/content/docs/agents/local-agents/overview.mdx index 09785a58..a3393d80 100644 --- a/src/content/docs/agents/local-agents/overview.mdx +++ b/src/content/docs/agents/local-agents/overview.mdx @@ -29,7 +29,7 @@ The capabilities below apply to the agent wherever it runs. Behavior that is spe ## What you can do with agents -This section covers how to interact with Warp's agents and the capabilities available during agent conversations: +This section covers how to interact with agents in Warp and the capabilities available during agent conversations: * [Interacting with Agents](/agents/local-agents/interacting-with-agents/) - Manage AI conversations tied to sessions, attach context, continue previous threads, or start new ones. * [Agent questions](/agents/local-agents/interacting-with-agents/agent-questions/) - Answer, skip, and configure clarifying questions the Agent asks during a conversation. @@ -41,6 +41,6 @@ This section covers how to interact with Warp's agents and the capabilities avai * [Web Search](/agents/capabilities/web-search/) - Allow agents to search the web for up-to-date information. * [Third-party CLI agents](/agents/cli-agents/overview/) - Run third-party CLI agents like Claude Code and Codex with Warp's built-in agent toolbelt. * [Active AI Recommendations](/agents/local-agents/active-ai/) - Get proactive fix recommendations based on errors and outputs. -* [Voice](/agents/local-agents/interacting-with-agents/voice/) - Talk to Warp's agent using voice commands. +* [Voice](/agents/local-agents/interacting-with-agents/voice/) - Talk to the Warp Agent using voice commands. For foundational capabilities like planning, rules, MCP servers, and agent profiles, see [Capabilities](/agents/capabilities/). diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 71320e1a..4dfabc3c 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -8,7 +8,7 @@ sidebar: --- import VideoEmbed from '@components/VideoEmbed.astro'; -Warp is an [open source](https://github.com/warpdotdev/warp) **Agentic Development Environment** that combines a modern, high-performance terminal with powerful agents to help you build, test, deploy, and debug code. Warp's agents are powered by **Oz**, the orchestration platform for running agents locally or in the cloud at scale. +Warp is an [open source](https://github.com/warpdotdev/warp) **Agentic Development Environment** that combines a modern, high-performance terminal with powerful agents to help you build, test, deploy, and debug code. Agents in Warp are powered by **Oz**, the orchestration platform for running agents locally or in the cloud at scale.
![Warp, the Agentic Development Environment: Warp (a modern terminal built for coding with agents) and Oz (the orchestration platform for cloud agents)](../../assets/terminal/warp-oz-welcome.png) @@ -26,7 +26,7 @@ Warp is where you work — a fast, modern terminal built for coding with agents. * [**Terminal and Agent modes**](/agents/local-agents/interacting-with-agents/terminal-and-agent-modes/): Switch between a clean terminal for commands and a dedicated conversation view for multi-turn agent workflows. * [**Modern terminal UX**](/terminal/editor/): Cursor movement, block-based navigation, multi-line editing, syntax highlighting, and rich completions. Built with Rust for high performance. * [**Code editor**](/code/overview/): File tree, code editor with LSP support, and interactive code review experience. -* [**Third-party CLI agents**](/agents/cli-agents/overview/): Run third-party CLI agents like Claude Code, Codex, and OpenCode with Warp's agent toolbelt — rich input, code review, notifications, and more. +* [**Third-party CLI agents**](/agents/cli-agents/overview/): Run third-party CLI agents like Claude Code, Codex, and OpenCode with the agent toolbelt — rich input, code review, notifications, and more. From f68ab638fee0ad90ed4b0da3b7706417042d65ac Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Mon, 10 Aug 2026 14:35:02 -0600 Subject: [PATCH 11/14] docs: address review feedback on the Agents IA reframe Thirteen inline review comments, all editorial. agents/index.mdx - Rewrote the intro. It repeated the frontmatter description almost verbatim and never mentioned third-party CLI agents or the platform, even though both are sections on the page. It now maps to the page's actual structure. - Moved the "three ways" sentence under the heading it introduces, since it read as an introduction to the bulleted list rather than the page. Applied the reviewer's wording verbatim. - Renamed the section to "Where to use the Warp Agent". Every bullet begins with "In", which implies location rather than method. - Applied the "already use Warp as your terminal" suggestion verbatim. agents/getting-started/agents-in-warp.mdx - Rewrote the description to drop the colon and the ambiguous "they". - Rewrote the opening so it no longer mirrors the description. - Replaced "powerful coding agents" with the Warp Agent. The reviewer asked whether these were the same thing; they are. The page's substantive sections are Warp Agent-specific, since autonomy and profiles are configured under Settings > Agents > Profiles, which does not govern third-party CLI agents. agents/local-agents/overview.mdx - Rewrote the description as a complete sentence instead of a fragment. Kept "Active AI" as a feature name rather than dropping "active": the page is titled "Active AI Recommendations" and Settings has an "Active AI toggle", so removing it would rename a feature. - Shortened the opening so it no longer competes with the stronger sentence below it, which the reviewer asked to keep. agents/cli/index.mdx - Split the description into two short sentences. - Changed "runs Warp Agent" to "runs the Warp Agent". The reviewer asked whether these were different; they are not. This was the only article-less instance in prose. AGENTS.md and .agents/references/terminology.md - Recorded that in prose the term takes the definite article, and that the bare form is for headings, labels, and the Settings path. That ambiguity is what prompted the question, so it belongs in the rule. All four rewritten descriptions verified within the 50-160 character guidance (116-143). Validation: build 364 pages, typecheck 0 errors, 0 broken internal links across 3,483. One net-new lint warning, the known "Agent FAQs" bolded page-name false positive. Co-Authored-By: Warp Agent --- .agents/references/terminology.md | 1 + AGENTS.md | 1 + src/content/docs/agents/cli/index.mdx | 6 +++--- .../docs/agents/getting-started/agents-in-warp.mdx | 8 ++++---- src/content/docs/agents/index.mdx | 10 ++++++---- src/content/docs/agents/local-agents/overview.mdx | 6 +++--- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.agents/references/terminology.md b/.agents/references/terminology.md index d1e8bc00..1aab3831 100644 --- a/.agents/references/terminology.md +++ b/.agents/references/terminology.md @@ -136,6 +136,7 @@ For the summary of the most critical terms (core features, Oz terms, terms to av - **Warp Agent** — Warp's built-in agent harness. Capitalized, singular, treated as a proper noun. Use "Warp Agent" when specifically referring to the built-in harness, especially when contrasting with third-party agents (Claude Code, Codex, etc.), or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). Use lowercase "agent" / "agents" everywhere else. *Usage note:* Avoid "Warp's agent" and "Warp's agents" — the ambiguous middle ground, and the main source of capitalization drift in the docs. Rewrite as "the Warp Agent" (the built-in harness), "agents" or "agents in Warp" (generic), or "the Warp Agent harness" (the server-side runtime). + *Usage note:* In prose the term takes the definite article — "the Warp Agent". Reserve the bare form for headings, sidebar labels, page titles, and the Settings path. "Runs the Warp Agent" reads correctly; "runs Warp Agent" reads as a different product. - **Oz is the platform, not the agent.** Never introduce Oz as "Warp's agent" or equate the two. Oz runs and coordinates agents; the Warp Agent is the agent. - **Warp Agent CLI** — The standalone terminal program (the `warp` binary) that runs the Warp Agent in any terminal, including over SSH and on machines without the Warp app. Documented at `/agents/cli/`. *Usage note:* Distinct from the Oz CLI (the `oz` binary), which runs and manages cloud agents. At the next launch (approximately August 18, 2026) the Oz CLI is retired and wrapped into the Warp Agent CLI, leaving a single CLI under this name. Until that ships, keep the two clearly separate in prose; afterwards, "Warp Agent CLI" covers both. diff --git a/AGENTS.md b/AGENTS.md index 8a034d51..624c90d2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -647,6 +647,7 @@ Product feature names retain their standard capitalization. Match the exact casi This is the single most drifted term in the docs, so the rule is narrow on purpose. - **Warp Agent** - Capitalized, singular, treated as a proper noun. Use it for Warp's built-in agent harness, especially when contrasting with third-party agents (Claude Code, Codex, and so on) or when referencing the Settings label (**Settings** > **Agents** > **Warp Agent**). +- **In prose, it takes the definite article: "the Warp Agent".** The bare form is for headings, sidebar labels, page titles, and the Settings path. "Runs the Warp Agent" reads correctly; "runs Warp Agent" reads as a different product. - **agent** / **agents** - Lowercase everywhere else. This is the generic concept and covers any agent on any surface, including cloud agents and third-party CLI agents. - **Proper nouns keep their capital A.** `Agent Mode`, `Agent Profiles`, `Agent Memory`, `Agent Management Panel`, `Agent API`, and `Warp Agent CLI` are feature names, not instances of the generic term. diff --git a/src/content/docs/agents/cli/index.mdx b/src/content/docs/agents/cli/index.mdx index b69df6f3..3cb8bfaf 100644 --- a/src/content/docs/agents/cli/index.mdx +++ b/src/content/docs/agents/cli/index.mdx @@ -1,8 +1,8 @@ --- title: "Warp Agent CLI overview" description: >- - Run the Warp Agent in any terminal with the Warp Agent CLI, prompting the agent, - running shell commands, and handing work off to cloud agents. + Run the Warp Agent in any terminal with the Warp Agent CLI. Prompt the agent, + run shell commands, and hand work off to cloud agents. --- import { VARS } from '@data/vars'; @@ -10,7 +10,7 @@ The {VARS.WARP_CLI} brings the Warp Agent from the Warp app to the terminal you ## What is the Warp Agent CLI? -The {VARS.WARP_CLI} is a standalone terminal program that runs [Warp Agent](/platform/harnesses/warp-agent/), the same agent that powers the Warp app. It renders conversations as a scrolling transcript in your terminal, with streaming responses, code diffs, tool calls, and permission requests you approve inline. +The {VARS.WARP_CLI} is a standalone terminal program that runs [the Warp Agent](/platform/harnesses/warp-agent/), the same agent that powers the Warp app. It renders conversations as a scrolling transcript in your terminal, with streaming responses, code diffs, tool calls, and permission requests you approve inline. The CLI is also a native terminal multiplexer. It creates and maintains its own pseudoterminal (PTY), which lets you and the agent execute commands and interact with running processes through the same terminal, including prompts and full-screen terminal apps. Because it's a regular command-line program, it works in any terminal emulator, including over SSH. diff --git a/src/content/docs/agents/getting-started/agents-in-warp.mdx b/src/content/docs/agents/getting-started/agents-in-warp.mdx index 26fe284e..2bced788 100644 --- a/src/content/docs/agents/getting-started/agents-in-warp.mdx +++ b/src/content/docs/agents/getting-started/agents-in-warp.mdx @@ -1,16 +1,16 @@ --- title: Agents in Warp description: >- - Learn how agents work in Warp: what they can do, how to control their - autonomy and permissions, and how to give them the right context. + Work with the Warp Agent in the Warp app. Control its autonomy with profiles + and permissions, and give it context from your codebase and tools. --- import VideoEmbed from '@components/VideoEmbed.astro'; -This page walks through working with agents in Warp: what they can do, how to control their autonomy and permissions with profiles, and how to give them the context they need. For an overview of the agent and the different ways to reach it, see [Agents overview](/agents/). +This page covers the Warp Agent in the Warp app. For the other places you can run it, see [Agents overview](/agents/). -Warp includes powerful coding agents designed to help you build, test, deploy, and debug while keeping you in control. Describe what you want to do in natural language (_you can even use your voice_), and the agent will take action using your environment, codebase, and saved context. +The **Warp Agent** helps you build, test, deploy, and debug while keeping you in control. Describe what you want to do in natural language (_you can even use your voice_), and it takes action using your environment, codebase, and saved context. ## What agents can do diff --git a/src/content/docs/agents/index.mdx b/src/content/docs/agents/index.mdx index cb2f03b1..b8d79081 100644 --- a/src/content/docs/agents/index.mdx +++ b/src/content/docs/agents/index.mdx @@ -5,15 +5,17 @@ description: >- Warp app, in any terminal with the CLI, or in the cloud. --- -The **Warp Agent** writes and edits code, debugs issues, runs commands, and works through multi-step tasks from natural language prompts. It reads your codebase, follows your rules and skills, and asks for approval before it acts. +The **Warp Agent** is Warp's built-in coding agent. It reads your codebase, follows your rules and skills, and asks for approval before it acts, and you can run it in the Warp app, in any terminal, or in the cloud. -You reach the same agent three ways. Which one you pick depends on where you're working, not on what the agent can do. +Warp also gives third-party CLI agents like Claude Code and Codex first-class support, and [Oz](/platform/overview/) is the platform that runs and coordinates agents at scale. --- -## Ways to use the Warp Agent +## Where to use the Warp Agent -* [**In the Warp app**](/agents/local-agents/overview/) - The full experience, with code review, agent management, and the terminal alongside your conversation. Start here if you use Warp as your terminal. +You can reach the same agent three ways. The method you pick depends on where you're working, not on what the agent can do. + +* [**In the Warp app**](/agents/local-agents/overview/) - The full experience, with code review, agent management, and the terminal alongside your conversation. Start here if you already use Warp as your terminal. * [**In any terminal, with the Warp Agent CLI**](/agents/cli/) - Run the `warp` command to start an agent conversation in any terminal emulator, over SSH, or on a machine where the Warp app isn't installed. * [**In the cloud, as a cloud agent**](/platform/) - Run the agent in the background from a trigger, a schedule, or an integration, without keeping a session open. Ideal for PR reviews, issue triage, and routine maintenance. diff --git a/src/content/docs/agents/local-agents/overview.mdx b/src/content/docs/agents/local-agents/overview.mdx index a3393d80..b21de585 100644 --- a/src/content/docs/agents/local-agents/overview.mdx +++ b/src/content/docs/agents/local-agents/overview.mdx @@ -1,11 +1,11 @@ --- title: Using the Warp Agent description: >- - Agents, code review, voice, and active AI recommendations, fully integrated - into the Warp Agentic Development Environment. + The Warp Agentic Development Environment fully integrates agents, code + review, voice, and Active AI recommendations. --- -Warp's local agents are interactive agents embedded directly in the terminal that help you write code, debug issues, run commands, and automate development tasks using natural language. Agents operate with full context from your codebase, Warp Drive, and connected tools, while you stay in control of every action. +The Warp Agent runs directly in your terminal, with full context from your codebase, Warp Drive, and connected tools, while you stay in control of every action. ## AI in Warp From eac12553c948b17ce5ade02d29278897deed2768 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Mon, 10 Aug 2026 15:57:59 -0600 Subject: [PATCH 12/14] docs: fix feature-name casing in the Using the Warp Agent description Review follow-up. The description read "code review ... Active AI recommendations", which got two feature names wrong: - "Code Review" is a glossary-confirmed feature name. I introduced the lowercase form by applying the reviewer's suggested wording verbatim without checking it against the glossary. - "Active AI Recommendations" is the page's own title, and the body of this same file already uses that form on line 43, so the description contradicted its own page. "Active AI" is capitalized in all 17 of its usages across the docs. Also added "Active AI" to the glossary. It was absent despite being a Settings toggle label and appearing 17 times, which is why the trailing word had drifted (7 "Recommendations" vs 3 "recommendations"). Note for a follow-up: style_lint does not check frontmatter descriptions. "Code Review" is in its product-casing list and it flags that term in body text, but it reported no casing issue for this file. Descriptions are the highest-visibility text we write, so the gap matters. Extending the check is not a one-liner though: sampling the frontmatter repo-wide surfaces about 17 candidate matches, and the two I inspected are both legitimate lowercase usage ("strong at code review" as a generic activity, and "Terminal and Agent modes" matching on "Agent Mode"). The check would need the same per-instance judgement the body checks already struggle with. Co-Authored-By: Warp Agent --- .agents/references/terminology.md | 3 +++ src/content/docs/agents/local-agents/overview.mdx | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.agents/references/terminology.md b/.agents/references/terminology.md index 1aab3831..7c329d4d 100644 --- a/.agents/references/terminology.md +++ b/.agents/references/terminology.md @@ -104,6 +104,9 @@ For the summary of the most critical terms (core features, Oz terms, terms to av - **Handoff** — The feature for moving an agent's work between a local Warp session and the cloud, or continuing a finished cloud run. Supports local-to-cloud, cloud-to-cloud, and cloud-to-local directions. *Usage note:* Capitalize as a feature name. Use lowercase "hand off" / "handed off" only as a verb. +- **Active AI** — The feature that proactively surfaces fixes and next actions based on terminal errors, inputs, and outputs. Covers Prompt Suggestions, Next Command predictions, and Suggested Code Diffs. + *Usage note:* Always capitalize "Active AI" — it is a proper feature name and the label of the Settings toggle. Write the full capability as **Active AI Recommendations**, matching the page title. Lowercase the following word only when it is a plain common noun rather than part of the name, as in "Active AI features" or "the Active AI toggle". + ## Coding terms (Warp features) - **Code** — Warp's coding experience for agent-assisted changes (editing, diffs, code review). diff --git a/src/content/docs/agents/local-agents/overview.mdx b/src/content/docs/agents/local-agents/overview.mdx index b21de585..6069dbea 100644 --- a/src/content/docs/agents/local-agents/overview.mdx +++ b/src/content/docs/agents/local-agents/overview.mdx @@ -1,8 +1,8 @@ --- title: Using the Warp Agent description: >- - The Warp Agentic Development Environment fully integrates agents, code - review, voice, and Active AI recommendations. + The Warp Agentic Development Environment fully integrates agents, Code + Review, voice, and Active AI Recommendations. --- The Warp Agent runs directly in your terminal, with full context from your codebase, Warp Drive, and connected tools, while you stay in control of every action. From d2c7d5d71d2aa67ecf11f8b1919be9bf61729a13 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Tue, 11 Aug 2026 10:17:59 -0600 Subject: [PATCH 13/14] docs: name the other agent surfaces directly on Agents in Warp Review nit from HYC: the opening pointed at Agents overview instead of saying where else the agent runs, which made the reader take an extra hop to learn something we can state in one sentence. Now names each surface with a direct link: the Warp Agent CLI for any terminal, cloud agents on Oz for background work, and third-party CLI agents. Each of these already has its own section further down the page, so the opening previews the page rather than deferring off it. Co-Authored-By: Warp Agent --- src/content/docs/agents/getting-started/agents-in-warp.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/agents/getting-started/agents-in-warp.mdx b/src/content/docs/agents/getting-started/agents-in-warp.mdx index 2bced788..da5bc6ee 100644 --- a/src/content/docs/agents/getting-started/agents-in-warp.mdx +++ b/src/content/docs/agents/getting-started/agents-in-warp.mdx @@ -6,7 +6,7 @@ description: >- --- import VideoEmbed from '@components/VideoEmbed.astro'; -This page covers the Warp Agent in the Warp app. For the other places you can run it, see [Agents overview](/agents/). +This page covers the Warp Agent in the Warp app. You can run the same agent from any terminal with the [Warp Agent CLI](/agents/cli/), or in the background as a [cloud agent](/platform/) on [Oz](/platform/overview/). Warp also supports [third-party CLI agents](/agents/cli-agents/overview/) like Claude Code and Codex. From f06c1886469d41c7c6c02ce3af88703118564a44 Mon Sep 17 00:00:00 2001 From: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> Date: Tue, 11 Aug 2026 10:20:11 -0600 Subject: [PATCH 14/14] docs: make the Agents intro a roadmap instead of restating its own sections Caught in a final read-through. While addressing the review comment that the intro should mention third-party CLI agents and the platform, I made the intro state the same claims as the sections it was meant to introduce: intro: "Warp also gives third-party CLI agents ... first-class support" section: "Warp gives third-party CLI coding agents first-class support" Same duplication for Oz. That is the redundancy pattern the review flagged elsewhere, reintroduced two paragraphs apart. The intro now previews the three sections without restating them. Co-Authored-By: Warp Agent --- src/content/docs/agents/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/agents/index.mdx b/src/content/docs/agents/index.mdx index b8d79081..b70aa42d 100644 --- a/src/content/docs/agents/index.mdx +++ b/src/content/docs/agents/index.mdx @@ -7,7 +7,7 @@ description: >- The **Warp Agent** is Warp's built-in coding agent. It reads your codebase, follows your rules and skills, and asks for approval before it acts, and you can run it in the Warp app, in any terminal, or in the cloud. -Warp also gives third-party CLI agents like Claude Code and Codex first-class support, and [Oz](/platform/overview/) is the platform that runs and coordinates agents at scale. +This page covers where to run the agent, the third-party CLI agents Warp supports, and [Oz](/platform/overview/), the platform that runs and coordinates agents at scale. ---