[{"data":1,"prerenderedAt":1652},["ShallowReactive",2],{"page-\u002Fagentic-modelling\u002F10-what-gets-in":3,"navigation":1330},{"id":4,"title":5,"body":6,"description":1322,"extension":1323,"meta":1324,"navigation":1325,"path":1326,"seo":1327,"stem":1328,"__hash__":1329},"docs\u002F07.agentic-modelling\u002F10.10-what-gets-in.md","Lesson 10: Watch What Gets Into Knowledge and Memory",{"type":7,"value":8,"toc":1303},"minimark",[9,13,31,36,39,42,46,54,62,65,82,86,91,94,100,105,116,122,127,132,135,139,165,301,328,346,349,391,404,412,426,432,435,439,445,509,515,518,541,547,561,565,580,592,598,607,618,644,668,674,678,684,692,734,736,740,782,786,788,804,808,811,814,818,821,825,832,834,838,880,884,886,902,906,909,912,915,919,925,928,945,947,951,993,997,999,1015,1019,1022,1028,1030,1034,1040,1044,1051,1053,1057,1099,1104,1106,1122,1125,1130,1134,1146,1152,1158,1160,1164,1167,1179,1181,1193,1195,1199,1241,1245,1247,1263,1267,1273,1279,1291,1293,1297],[10,11,5],"h1",{"id":12},"lesson-10-watch-what-gets-into-knowledge-and-memory",[14,15,16,21,22,26,27],"p",{},[17,18,20],"a",{"href":19},"\u002Fagentic-modelling","Training overview"," · Lesson 10 of 11 · Previous: ",[17,23,25],{"href":24},"\u002Fagentic-modelling\u002F09-follow-a-credential","Follow a credential"," · Next: ",[17,28,30],{"href":29},"\u002Fagentic-modelling\u002F11-tools-and-handoffs","Draw tools from others and hand-offs",[32,33,35],"h2",{"id":34},"goal","Goal",[14,37,38],{},"What the agent reads tomorrow can come from what an attacker wrote today. Draw how it gets in.",[14,40,41],{},"After this lesson you can draw a knowledge base with the pipeline that fills it, draw an agent's memory, and read where the content in each one comes from.",[32,43,45],{"id":44},"what-you-start-from","What you start from",[14,47,48,49,53],{},"Your model from lesson 9, or import ",[17,50,52],{"href":51},"\u002Fguides\u002Fagentic-modelling\u002FL9-solution.zip","L9-solution.zip",".",[14,55,56,57,61],{},"The model refers to the lesson 7 control by name. If you import it, create that control first, as ",[17,58,60],{"href":59},"\u002Fagentic-modelling\u002F08-leave-unknowns-open#what-you-start-from","lesson 8"," describes.",[14,63,64],{},"The team adds two things to the copilot:",[66,67,68,76],"ul",{},[69,70,71,75],"li",{},[72,73,74],"strong",{},"A knowledge base."," An ingestion pipeline turns resolved tickets into knowledge base entries. The copilot retrieves entries to answer similar tickets.",[69,77,78,81],{},[72,79,80],{},"A memory."," The copilot keeps notes about each customer between tickets, in a memory service. It saves a note with a tool call and reads the notes back on the customer's next ticket.",[32,83,85],{"id":84},"the-recipe-step","The recipe step",[87,88,90],"h3",{"id":89},"step-8-draw-how-knowledge-and-memory-get-in","Step 8: Draw how knowledge and memory get in",[14,92,93],{},"Draw an ingestion pipeline with what it reads, and its write into the knowledge base as a Knowledge Write carrying the items it writes. Draw what the agent remembers as a memory service it writes to and reads from, and set the origin of what it keeps to the least trusted origin of what it read when it wrote it, never Model generated. Answer who can write to each store only as the team states it.",[14,95,96,99],{},[72,97,98],{},"Why:"," What the agent reads tomorrow can come from what an attacker wrote today. A Knowledge Write carries the least trusted origin its pipeline ingested, whatever the stored item is stated as; a generic flow carries nothing, and the stored item's stated origin decides alone.",[14,101,102],{},[72,103,104],{},"Ask:",[66,106,107,110,113],{},[69,108,109],{},"What feeds the knowledge base, and through which pipeline?",[69,111,112],{},"What does the agent keep in memory, and what did it write it from?",[69,114,115],{},"Who can write to each store the agent reads?",[14,117,118,121],{},[72,119,120],{},"Classes:"," RAG Ingestion Pipeline, Knowledge Write, Vector Database, Agent Memory Service, Knowledge Item.",[14,123,124],{},[72,125,126],{},"What the analysis reads here:",[66,128,129],{},[69,130,131],{},"A write that carries what an ingestion pipeline took in: Knowledge Write.",[14,133,134],{},"Something fills a knowledge base, and that something reads content from somewhere. Draw the whole path: what the pipeline reads, the pipeline, its write into the store, and the agent's read. The store alone cannot tell the analysis who wrote what is in it.",[32,136,138],{"id":137},"steps","Steps",[14,140,141,144,145,148,149,152,153,156,157,160,161,164],{},[72,142,143],{},"Draw the knowledge base and the memory."," Set step 14's answers on the copilot's ",[72,146,147],{},"Attributes"," tab and save with the save icon on the right of the panel. Step 15 changes the lesson 7 control: in the ",[72,150,151],{},"Browser",", open ",[72,154,155],{},"Support copilot: untrusted-content isolation",", go to its ",[72,158,159],{},"Control Classes"," tab, open the class's attributes with the sliders icon on its row, change the answer and save. The pencil icon on the control's row in the copilot's ",[72,162,163],{},"Controls"," tab opens the same dialog.",[166,167,168,178,186,194,201,207,225,237,250,262,273,283,289,295],"ol",{},[69,169,170,171,174,175,53],{},"Add ",[72,172,173],{},"Knowledge ingestion"," (class RAG Ingestion Pipeline), inside ",[72,176,177],{},"Support network",[69,179,170,180,183,184,53],{},[72,181,182],{},"Support knowledge base"," (class Vector Database), inside ",[72,185,177],{},[69,187,170,188,191,192,53],{},[72,189,190],{},"Customer memory"," (class Agent Memory Service), inside ",[72,193,177],{},[69,195,196,197,200],{},"Add the data item ",[72,198,199],{},"Knowledge base entries"," (class Knowledge Item). Sensitivity: Confidential; Credential: No.",[69,202,196,203,206],{},[72,204,205],{},"Customer memory notes"," (class Knowledge Item). Sensitivity: Confidential; Origin: Arbitrary public; Credential: No.",[69,208,209,210,213,214,217,218,220,221,224],{},"Draw ",[72,211,212],{},"Resolved tickets"," (class HTTP\u002FS Request) from ",[72,215,216],{},"Ticket system"," to ",[72,219,173],{},", and tick ",[72,222,223],{},"Ticket text"," on its Data tab.",[69,226,209,227,230,231,217,233,220,235,224],{},[72,228,229],{},"Index entries"," (class Knowledge Write) from ",[72,232,173],{},[72,234,182],{},[72,236,199],{},[69,238,209,239,242,243,217,245,220,248,224],{},[72,240,241],{},"Context Ingress: knowledge base"," (class Context Ingress) from ",[72,244,182],{},[72,246,247],{},"Support copilot",[72,249,199],{},[69,251,209,252,255,256,217,258,220,260,224],{},[72,253,254],{},"Save memory"," (class Agent Tool Call) from ",[72,257,247],{},[72,259,190],{},[72,261,205],{},[69,263,209,264,242,267,217,269,220,271,224],{},[72,265,266],{},"Context Ingress: customer memory",[72,268,190],{},[72,270,247],{},[72,272,205],{},[69,274,275,276,278,279,217,281,53],{},"Attach ",[72,277,223],{}," and ",[72,280,199],{},[72,282,173],{},[69,284,275,285,217,287,53],{},[72,286,199],{},[72,288,182],{},[69,290,275,291,217,293,53],{},[72,292,205],{},[72,294,190],{},[69,296,297,298,300],{},"On ",[72,299,247],{},", set:",[66,302,303,317],{},[69,304,305,308,309,313,314],{},[72,306,307],{},"Persistent Memory Enabled"," (",[310,311,312],"code",{},"persistent_memory_enabled",", under Memory Integrity) = ",[310,315,316],{},"true",[69,318,319,308,322,325,326],{},[72,320,321],{},"Retrieval Store Feeds Context",[310,323,324],{},"retrieval_store_feeds_context",", under Retrieval Integrity) = ",[310,327,316],{},[166,329,331],{"start":330},15,[69,332,297,333,335,336,308,339,342,343,53],{},[72,334,155],{},", set ",[72,337,338],{},"Persisted Memory Trust Handling",[310,340,341],{},"persisted_memory_trust_handling",", under Application Security) = ",[310,344,345],{},"recalled_as_untrusted_via_isolation",[14,347,348],{},"Each new item carries its own facts:",[66,350,351,371],{},[69,352,353,355,356,359,360,363,364,367,368,370],{},[72,354,199],{}," are built from resolved tickets, with customers' own words and details. They are ",[72,357,358],{},"Confidential",". Leave ",[72,361,362],{},"Origin"," empty, so the field shows ",[72,365,366],{},"Unclassified",": the ",[72,369,229],{}," flow is a Knowledge Write, and it carries the origin of what the pipeline read. You do not have to know it, and you should not guess it.",[69,372,373,375,376,378,379,382,383,386,387,390],{},[72,374,205],{}," are ",[72,377,358],{}," too, and their origin is ",[72,380,381],{},"Arbitrary public",": the least trusted origin of what the copilot read when it wrote them. The copilot writes a note while it works a ticket, and it reads tickets and fetched pages that anyone can write. Do not set them ",[72,384,385],{},"Model generated"," because a model wrote them: on a memory read that origin leaves the route undetermined, so the notes no longer show that they come from what customers wrote (see the guess table in ",[17,388,60],{"href":389},"\u002Fagentic-modelling\u002F08-leave-unknowns-open#the-recipe-step",").",[14,392,393,396,397,399,400,403],{},[72,394,395],{},"Ask again about the control."," Lesson 7's isolation control answered ",[72,398,338],{}," with ",[310,401,402],{},"no_persisted_memory",". That was true then. With memory drawn, the model now contradicts it. A new channel into the agent reopens every claim the control makes about channels, so you ask the team again. They confirm two things:",[66,405,406,409],{},[69,407,408],{},"Notes recalled from memory are treated as untrusted and go through the isolation, like tickets and fetched pages.",[69,410,411],{},"The inventory of untrusted channels now includes the knowledge base and the memory.",[14,413,414,415,217,417,419,420,423,424,53],{},"The first changes an answer. This is the step above that changes ",[72,416,338],{},[310,418,345],{},". The second re-confirms an answer you already have: ",[72,421,422],{},"Untrusted Source Inventory Complete"," stays ",[310,425,316],{},[14,427,428,429,431],{},"The control is one object in the ",[72,430,151],{},". Every model it is assigned to reads the new answer, including your lesson 7 to 9 models, and an import never changes it. Make the change once, whichever model you continue with.",[14,433,434],{},"Generate again.",[32,436,438],{"id":437},"what-you-should-see","What you should see",[14,440,441,444],{},[72,442,443],{},"Findings:"," 3 systemic findings: 2 Confirmed · 1 Not ruled out.",[446,447,453],"div",{"className":448,"tabIndex":450,"role":451,"ariaLabel":452},[449],"table-frame",0,"region","Table: What you should see",[454,455,456,472],"table",{},[457,458,459],"thead",{},[460,461,462,466,469],"tr",{},[463,464,465],"th",{},"Finding",[463,467,468],{},"State",[463,470,471],{},"Legs",[473,474,475,487,498],"tbody",{},[460,476,477,481,484],{},[478,479,480],"td",{},"Credential chain at CRM API key",[478,482,483],{},"Confirmed · control modelled on foothold",[478,485,486],{},"foothold present · reach present · unlock present · weak credential undetermined (aggravating)",[460,488,489,492,495],{},[478,490,491],{},"Lethal trifecta at Support copilot",[478,493,494],{},"Confirmed · control modelled on U, X",[478,496,497],{},"U present · P present · X present · W absent (aggravating)",[460,499,500,503,506],{},[478,501,502],{},"Lethal trifecta at Ticket summariser",[478,504,505],{},"Not ruled out · unmitigated",[478,507,508],{},"U present · P present · X undetermined · W absent (aggravating)",[14,510,511,514],{},[72,512,513],{},"Facts to establish:"," 3 questions.",[14,516,517],{},"Open questions on Not ruled out findings:",[66,519,520],{},[69,521,522,523],{},"Lethal trifecta at Ticket summariser:\n",[66,524,525,528,531],{},[69,526,527],{},"Can an untrusted party read what reaches CRM?",[69,529,530],{},"Every drawn route from CRM ends inside; assert its outbound flows complete if nothing else leaves it",[69,532,533,534,308,537,540],{},"Draw the outbound flows of Staff console, or answer ",[72,535,536],{},"Markdown Image Rendering Policy",[310,538,539],{},"markdown_image_rendering_policy",", in Output Rendering Exfiltration) on Staff console",[14,542,543,546],{},[72,544,545],{},"Model gaps:"," No gaps these patterns can detect; not an attestation of completeness.",[14,548,549,550,553,554,557,558,560],{},"The findings do not change. The copilot's trifecta was already ",[72,551,552],{},"Confirmed"," through the ticket, the summariser's trifecta is still ",[72,555,556],{},"Not ruled out",", and the CRM API key's chain is still ",[72,559,552],{},". What changed is inside the copilot's trifecta: expand it and read the routes of its U and P legs.",[32,562,564],{"id":563},"what-changed-and-why","What changed and why",[14,566,567,570,571,573,574,576,577,579],{},[72,568,569],{},"The knowledge base is a way in."," The U leg has a new present route on ",[72,572,241],{},". Its basis reads \"ingested by Knowledge ingestion from Ticket text (arbitrary_public)\". The analysis followed what you drew: tickets reach the pipeline on ",[72,575,212],{},", the pipeline writes the entries on ",[72,578,229],{},", and the copilot reads them back. The entries carry the origin of the ticket text, so a customer who writes a crafted ticket today can steer the copilot's answer to another customer's ticket next month.",[14,581,582,585,586,588,589,591],{},[72,583,584],{},"The memory is a way in."," The U leg has a second new present route, on ",[72,587,266],{},". Its basis reads \"Customer memory notes\": the notes' stated origin, ",[72,590,381],{},", decides it. What an attacker writes in one ticket can come back from memory on the next.",[14,593,594,597],{},[72,595,596],{},"Both are private data too."," The P leg gains a present route on each of the two ingresses. The knowledge base entries come from many customers' tickets, and the copilot retrieves them while it answers any customer. The knowledge base is a source of private data across customers: one customer's details can reach another customer's reply.",[14,599,600,603,604,606],{},[72,601,602],{},"The finding did not move, and that is expected."," U was already present through the ticket. One present route is enough for a leg, so two more do not change the finding's state. That is why you read the routes, not the state, to see what a change did. The X leg also lists ",[72,605,190],{}," as a route via neighbour, undetermined; X is already present, so it is not asked.",[14,608,609,612,613,278,615,617],{},[72,610,611],{},"New channels reopen the control's claims."," A control's answers describe the system on the day they were given. \"No persisted memory\" was true in lesson 7 and stopped being true the moment you drew the memory. Both ",[310,614,402],{},[310,616,345],{}," count as secure answers, so nothing on screen flags the stale one: that is why you ask the team again. Each time you draw a new way into an agent, check every control on it that makes a claim about channels, and ask the team again. Answer only what they re-confirm.",[14,619,620,623,624,627,628,631,632,627,635,638,639,643],{},[72,621,622],{},"The memory service's write answers count."," The Agent Memory Service class asks whether memory writes are gated from untrusted content (",[72,625,626],{},"Memory Writes Gated From Untrusted Content",", ",[310,629,630],{},"memory_write_gated_from_untrusted_content",", under Memory Integrity) and whether its endpoints require authentication (",[72,633,634],{},"Memory Endpoints Require Authentication",[310,636,637],{},"memory_endpoints_require_authentication",", under Authentication & Access). The table in ",[17,640,642],{"href":641},"\u002Fagentic-modelling\u002F05-state-what-the-agent-can-do#the-recipe-step","lesson 5's recipe step"," lists both as deciding who can write to a store the agent reads, and that row applies here. Threat Patterns 0.1.6 and later read them:",[66,645,646,655],{},[69,647,648,650,651,654],{},[72,649,626],{}," = ",[310,652,653],{},"false"," makes the copilot's memory route present, whatever the notes are stated as. Untrusted content can be written into what the copilot reads back.",[69,656,657,658,660,661,664,665,53],{},"Both answered ",[310,659,316],{}," settle nothing. The route stays where the notes' stated origin puts it, and where that leaves it undetermined, ",[72,662,663],{},"Second-order poisoning not analysed"," stays under ",[72,666,667],{},"Facts that could raise a finding",[14,669,670,671,673],{},"Answer them only as the team states them. The last two exercises below show the first case: they guess an origin, which leaves the memory route undetermined, then answer ",[310,672,653],{},", which makes it present.",[32,675,677],{"id":676},"exercise-who-writes-to-the-store","Exercise: Who writes to the store",[14,679,680,681,683],{},"The team confirms three facts about the knowledge base: only the ingestion pipeline can write to it, every request needs authentication, and it cannot be reached from outside. Answer them on ",[72,682,182],{},":",[14,685,686,687,691],{},"On a scratch copy: import ",[17,688,690],{"href":689},"\u002Fguides\u002Fagentic-modelling\u002FL10-solution.zip","L10-solution.zip"," and rename it.",[166,693,694],{},[69,695,297,696,698,699],{},[72,697,182],{},", set:\n",[66,700,701,712,723],{},[69,702,703,308,706,709,710],{},[72,704,705],{},"Authentication Required for Every Request",[310,707,708],{},"authentication_required",", under Authentication & Access) = ",[310,711,316],{},[69,713,714,308,717,720,721],{},[72,715,716],{},"Writes Restricted to Ingestion Pipeline",[310,718,719],{},"index_write_restricted_to_pipeline",", under Data Integrity) = ",[310,722,316],{},[69,724,725,308,728,731,732],{},[72,726,727],{},"API Not Publicly Reachable",[310,729,730],{},"not_publicly_reachable",", under Network & Connectivity) = ",[310,733,316],{},[14,735,434],{},[14,737,738,444],{},[72,739,443],{},[446,741,744],{"className":742,"tabIndex":450,"role":451,"ariaLabel":743},[449],"Table: Exercise: Who writes to the store",[454,745,746,756],{},[457,747,748],{},[460,749,750,752,754],{},[463,751,465],{},[463,753,468],{},[463,755,471],{},[473,757,758,766,774],{},[460,759,760,762,764],{},[478,761,480],{},[478,763,483],{},[478,765,486],{},[460,767,768,770,772],{},[478,769,491],{},[478,771,494],{},[478,773,497],{},[460,775,776,778,780],{},[478,777,502],{},[478,779,505],{},[478,781,508],{},[14,783,784,514],{},[72,785,513],{},[14,787,517],{},[66,789,790],{},[69,791,522,792],{},[66,793,794,796,802],{},[69,795,527],{},[69,797,533,798,308,800,540],{},[72,799,536],{},[310,801,539],{},[69,803,530],{},[14,805,806,546],{},[72,807,545],{},[14,809,810],{},"The knowledge base route on the copilot's U leg stays present, with the same basis. Restricting who writes to the store does not clean what the pipeline writes into it: the pipeline is the one writer, and it writes what customers wrote in their tickets. These answers are still worth recording: in the real system they close a different way in, a direct write by someone other than the pipeline.",[14,812,813],{},"Delete the copy when you are done.",[32,815,817],{"id":816},"exercise-your-own-store","Exercise: Your own store",[14,819,820],{},"Make a guess. The knowledge base is your own, so set the entries' origin to first party:",[14,822,686,823,691],{},[17,824,690],{"href":689},[166,826,827],{},[69,828,297,829,831],{},[72,830,199],{},", set Origin to Authenticated first party.",[14,833,434],{},[14,835,836,444],{},[72,837,443],{},[446,839,842],{"className":840,"tabIndex":450,"role":451,"ariaLabel":841},[449],"Table: Exercise: Your own store",[454,843,844,854],{},[457,845,846],{},[460,847,848,850,852],{},[463,849,465],{},[463,851,468],{},[463,853,471],{},[473,855,856,864,872],{},[460,857,858,860,862],{},[478,859,480],{},[478,861,483],{},[478,863,486],{},[460,865,866,868,870],{},[478,867,491],{},[478,869,494],{},[478,871,497],{},[460,873,874,876,878],{},[478,875,502],{},[478,877,505],{},[478,879,508],{},[14,881,882,514],{},[72,883,513],{},[14,885,517],{},[66,887,888],{},[69,889,522,890],{},[66,891,892,894,900],{},[69,893,527],{},[69,895,533,896,308,898,540],{},[72,897,536],{},[310,899,539],{},[69,901,530],{},[14,903,904,546],{},[72,905,545],{},[14,907,908],{},"The knowledge base route stays present. Its basis now adds \"the stated authenticated_first_party is overridden\". A Knowledge Write carries the least trusted origin its pipeline read, whatever the entries are stated as. The analysis saw the guess, and the drawing overruled it.",[14,910,911],{},"Where content sits does not decide its origin. Who wrote it does. Never state a stored item first party because it sits in your own store.",[14,913,914],{},"Keep this copy for the next exercise.",[32,916,918],{"id":917},"exercise-a-generic-write","Exercise: A generic write",[14,920,921,922,924],{},"Keep the guess. Delete the Knowledge Write ",[72,923,229],{},", then draw it again as an HTTP\u002FS Request.",[14,926,927],{},"Continue on your copy from the exercise before.",[166,929,930,935],{},[69,931,932,933,53],{},"Delete ",[72,934,229],{},[69,936,209,937,213,939,217,941,220,943,224],{},[72,938,229],{},[72,940,173],{},[72,942,182],{},[72,944,199],{},[14,946,434],{},[14,948,949,444],{},[72,950,443],{},[446,952,955],{"className":953,"tabIndex":450,"role":451,"ariaLabel":954},[449],"Table: Exercise: A generic write",[454,956,957,967],{},[457,958,959],{},[460,960,961,963,965],{},[463,962,465],{},[463,964,468],{},[463,966,471],{},[473,968,969,977,985],{},[460,970,971,973,975],{},[478,972,480],{},[478,974,483],{},[478,976,486],{},[460,978,979,981,983],{},[478,980,491],{},[478,982,494],{},[478,984,497],{},[460,986,987,989,991],{},[478,988,502],{},[478,990,505],{},[478,992,508],{},[14,994,995,514],{},[72,996,513],{},[14,998,517],{},[66,1000,1001],{},[69,1002,522,1003],{},[66,1004,1005,1007,1009],{},[69,1006,527],{},[69,1008,530],{},[69,1010,533,1011,308,1013,540],{},[72,1012,536],{},[310,1014,539],{},[14,1016,1017,546],{},[72,1018,545],{},[14,1020,1021],{},"The knowledge base route goes absent. A generic flow carries no ingested origin, so the guessed origin on the entries decides alone, and it says the entries are trusted. The drawing no longer shows that customers write them.",[14,1023,1024,1025,1027],{},"The copilot's trifecta is still ",[72,1026,552],{},", because the ticket keeps U present. Here the ticket still keeps the finding; for an agent whose only way in is its knowledge base, this guess removes it. Two small mistakes, a guessed origin and the wrong flow class, remove a real way in, and nothing on screen says either was a mistake.",[14,1029,813],{},[32,1031,1033],{"id":1032},"exercise-a-note-the-model-wrote","Exercise: A note the model wrote",[14,1035,1036,1037,1039],{},"Make another guess. The copilot writes its notes, so set the origin of ",[72,1038,205],{}," to Model generated:",[14,1041,686,1042,691],{},[17,1043,690],{"href":689},[166,1045,1046],{},[69,1047,297,1048,1050],{},[72,1049,205],{},", set Origin to Model generated.",[14,1052,434],{},[14,1054,1055,444],{},[72,1056,443],{},[446,1058,1061],{"className":1059,"tabIndex":450,"role":451,"ariaLabel":1060},[449],"Table: Exercise: A note the model wrote",[454,1062,1063,1073],{},[457,1064,1065],{},[460,1066,1067,1069,1071],{},[463,1068,465],{},[463,1070,468],{},[463,1072,471],{},[473,1074,1075,1083,1091],{},[460,1076,1077,1079,1081],{},[478,1078,480],{},[478,1080,483],{},[478,1082,486],{},[460,1084,1085,1087,1089],{},[478,1086,491],{},[478,1088,494],{},[478,1090,497],{},[460,1092,1093,1095,1097],{},[478,1094,502],{},[478,1096,505],{},[478,1098,508],{},[14,1100,1101,1103],{},[72,1102,513],{}," 4 questions.",[14,1105,517],{},[66,1107,1108],{},[69,1109,522,1110],{},[66,1111,1112,1114,1116],{},[69,1113,527],{},[69,1115,530],{},[69,1117,533,1118,308,1120,540],{},[72,1119,536],{},[310,1121,539],{},[14,1123,1124],{},"Facts that could raise a finding:",[66,1126,1127],{},[69,1128,1129],{},"Second-order poisoning not analysed (on Customer memory)",[14,1131,1132,546],{},[72,1133,545],{},[14,1135,1136,1137,1139,1140,1142,1143,1145],{},"The memory route on the copilot's U leg goes undetermined, and a new line appears under ",[72,1138,667],{},": ",[72,1141,663],{},". The copilot's trifecta is still ",[72,1144,552],{},", because the ticket keeps U present.",[14,1147,1148,1151],{},[72,1149,1150],{},"This is the guess step 8 forbids."," Step 8 asks for the least trusted origin of what the copilot read when it wrote the note, never Model generated. The copilot writes its notes while it reads tickets and fetched pages that anyone can write. Model generated says who typed the note, not where its content came from, and it hides that the notes come from customers' tickets.",[14,1153,1154,1157],{},[72,1155,1156],{},"Undetermined, not safe."," The guess does not make the route absent. It leaves it open, and the new line says why: the analysis does not follow what the copilot read into what it wrote. The route is no longer present, but nothing about the memory has become safer.",[14,1159,914],{},[32,1161,1163],{"id":1162},"exercise-writes-left-open","Exercise: Writes left open",[14,1165,1166],{},"This exercise needs Threat Patterns 0.1.6 or later, because earlier versions do not read the memory service's write answers.",[14,1168,1169,1170,1172,1173,1175,1176,1178],{},"Keep the guess. You ask the team how notes get into the memory, and they confirm that nothing stops the copilot from writing untrusted content into it. Double-click ",[72,1171,190],{},", answer ",[72,1174,626],{}," on its ",[72,1177,147],{}," tab, and save.",[14,1180,927],{},[166,1182,1183],{},[69,1184,297,1185,335,1187,308,1189,313,1191,53],{},[72,1186,190],{},[72,1188,626],{},[310,1190,630],{},[310,1192,653],{},[14,1194,434],{},[14,1196,1197,444],{},[72,1198,443],{},[446,1200,1203],{"className":1201,"tabIndex":450,"role":451,"ariaLabel":1202},[449],"Table: Exercise: Writes left open",[454,1204,1205,1215],{},[457,1206,1207],{},[460,1208,1209,1211,1213],{},[463,1210,465],{},[463,1212,468],{},[463,1214,471],{},[473,1216,1217,1225,1233],{},[460,1218,1219,1221,1223],{},[478,1220,480],{},[478,1222,483],{},[478,1224,486],{},[460,1226,1227,1229,1231],{},[478,1228,491],{},[478,1230,494],{},[478,1232,497],{},[460,1234,1235,1237,1239],{},[478,1236,502],{},[478,1238,505],{},[478,1240,508],{},[14,1242,1243,514],{},[72,1244,513],{},[14,1246,517],{},[66,1248,1249],{},[69,1250,522,1251],{},[66,1252,1253,1255,1257],{},[69,1254,527],{},[69,1256,530],{},[69,1258,533,1259,308,1261,540],{},[72,1260,536],{},[310,1262,539],{},[14,1264,1265,546],{},[72,1266,545],{},[14,1268,1269,1270,1272],{},"The memory route on the copilot's U leg is present again. Its basis now reads \"memory_write_gated_from_untrusted_content = false\". ",[72,1271,663],{}," is gone.",[14,1274,1275,1278],{},[72,1276,1277],{},"The write answer decides, whatever the notes are stated as."," The notes still say Model generated. The route no longer depends on it: untrusted content can be written into the memory, and the copilot reads the memory back. A fact the team gave you outweighs the guess on the notes.",[14,1280,1281,1287,1288,1290],{},[72,1282,1283,1284,1286],{},"A ",[310,1285,316],{}," answer would not have done the opposite."," Had the team confirmed that writes are gated and that the endpoints require authentication, both answers ",[310,1289,316],{},", the route would have stayed undetermined and the line would have stayed. The notes' stated origin would still decide the route, so set it as step 8 asks.",[14,1292,813],{},[32,1294,1296],{"id":1295},"next","Next",[14,1298,1299,1302],{},[17,1300,1301],{"href":29},"Lesson 11: Draw tools from others and hand-offs",". The copilot hands refunds to a third agent, which calls the payment provider's tool server.",{"title":1304,"searchDepth":1305,"depth":1305,"links":1306},"",3,[1307,1309,1310,1313,1314,1315,1316,1317,1318,1319,1320,1321],{"id":34,"depth":1308,"text":35},2,{"id":44,"depth":1308,"text":45},{"id":84,"depth":1308,"text":85,"children":1311},[1312],{"id":89,"depth":1305,"text":90},{"id":137,"depth":1308,"text":138},{"id":437,"depth":1308,"text":438},{"id":563,"depth":1308,"text":564},{"id":676,"depth":1308,"text":677},{"id":816,"depth":1308,"text":817},{"id":917,"depth":1308,"text":918},{"id":1032,"depth":1308,"text":1033},{"id":1162,"depth":1308,"text":1163},{"id":1295,"depth":1308,"text":1296},"Training overview · Lesson 10 of 11 · Previous: Follow a credential · Next: Draw tools from others and hand-offs","md",{},true,"\u002Fagentic-modelling\u002F10-what-gets-in",{"title":5,"description":1322},"07.agentic-modelling\u002F10.10-what-gets-in","zDJpCUSZ3Ojb71rXXxNaANRINOx_m6jfhIba1m49IaI",[1331,1386,1421,1476,1510,1554,1569,1632],{"title":1332,"description":1333,"path":1334,"stem":1335,"children":1336,"page":-1},"Platform","Modelling, analysis, findings and controls in the Dethernety platform.","\u002Fplatform","01.platform",[1337,1341,1346,1351,1356,1361,1366,1371,1376,1381],{"title":1338,"path":1334,"stem":1339,"description":1340},"Dethernety User Documentation","01.platform\u002Findex","User guide for the Dethernety threat modeling platform",{"title":1342,"path":1343,"stem":1344,"description":1345},"Quick Start","\u002Fplatform\u002Fquick-start","01.platform\u002F01.quick-start","Install Dethernety on your own machine, draw a four-element model and read its first threat finding.",{"title":1347,"path":1348,"stem":1349,"description":1350},"Building Your First Model","\u002Fplatform\u002Fbuilding-your-first-model","01.platform\u002F02.building-your-first-model","Build a threat model of an online store in about 30 minutes, run a Threat Report on it, and raise an issue from a finding.",{"title":1352,"path":1353,"stem":1354,"description":1355},"Security Analysis Workflow","\u002Fplatform\u002Fsecurity-analysis-workflow","01.platform\u002F03.security-analysis-workflow","How to run security analysis and interpret results to improve your threat models.",{"title":1357,"path":1358,"stem":1359,"description":1360},"Managing Findings","\u002Fplatform\u002Fmanaging-findings","01.platform\u002F04.managing-findings","Record decisions on system-generated exposures and countermeasures — affirm them as confirmed live risk, or mute them as not applicable, false positive, waived, or superseded — instead of deleting them.",{"title":1362,"path":1363,"stem":1364,"description":1365},"Working with Security Controls","\u002Fplatform\u002Fworking-with-security-controls","01.platform\u002F05.working-with-security-controls","Learn how to create, manage, and assign reusable security controls in Dethernety to protect your threat models.",{"title":1367,"path":1368,"stem":1369,"description":1370},"Issue Management Guide","\u002Fplatform\u002Fissue-management-guide","01.platform\u002F06.issue-management-guide","Issue tracking, filtering, and management in Dethernety.",{"title":1372,"path":1373,"stem":1374,"description":1375},"Boundary Trust Zones","\u002Fplatform\u002Fboundary-trust-zones","01.platform\u002F07.boundary-trust-zones","Record each security boundary's trust zone, business domains, operational role, and approved channels to document how your system is meant to be segmented.",{"title":1377,"path":1378,"stem":1379,"description":1380},"Understanding Modules","\u002Fplatform\u002Funderstanding-modules","01.platform\u002F08.understanding-modules","How Dethernety's module system extends your threat modeling capabilities.",{"title":1382,"path":1383,"stem":1384,"description":1385},"Component Configuration Guide","\u002Fplatform\u002Fcomponent-configuration-guide","01.platform\u002F09.component-configuration-guide","Detailed guide on configuring different types of components and their security implications.",{"title":1387,"description":1388,"path":1389,"stem":1390,"children":1391,"page":-1},"BYODt cloud","Deploying the platform yourself and connecting it to the BYODt cloud.","\u002Fbyodt-cloud","02.byodt-cloud",[1392,1396,1401,1406,1411,1416],{"title":1393,"path":1389,"stem":1394,"description":1395},"BYODt Deployment","02.byodt-cloud\u002Findex","Run Dethernety on your own machine: install, configure, operate, and recover",{"title":1397,"path":1398,"stem":1399,"description":1400},"Installing the BYODt Deployment","\u002Fbyodt-cloud\u002Finstallation","02.byodt-cloud\u002F01.installation","Install Dethernety on your own machine: check the requirements, download and verify the signed bundle, start it, and confirm the deployment is healthy",{"title":1402,"path":1403,"stem":1404,"description":1405},"Configuring the BYODt Deployment","\u002Fbyodt-cloud\u002Fconfiguration","02.byodt-cloud\u002F02.configuration","The .env settings reference, the generated secret file, database storage, and how to apply a change",{"title":1407,"path":1408,"stem":1409,"description":1410},"Operating the BYODt Deployment","\u002Fbyodt-cloud\u002Foperations","02.byodt-cloud\u002F03.operations","The byodt command reference and the day-to-day tasks: start, stop, inspect, back up, restore, TLS, upgrade, remove",{"title":1412,"path":1413,"stem":1414,"description":1415},"Connecting the BYODt Deployment to the Cloud","\u002Fbyodt-cloud\u002Fcloud","02.byodt-cloud\u002F04.cloud","Add cloud sign-in and content packages from the operator console, and disconnect again",{"title":1417,"path":1418,"stem":1419,"description":1420},"Troubleshooting the BYODt Deployment","\u002Fbyodt-cloud\u002Ftroubleshooting","02.byodt-cloud\u002F05.troubleshooting","Symptom, cause, and fix for the failures this deployment reports",{"title":1422,"description":1423,"path":1424,"stem":1425,"children":1426,"page":-1},"Dethereal","The Claude Code plugin: build a threat model in conversation and publish it to the platform.","\u002Fdethereal","03.dethereal",[1427,1431,1436,1441,1446,1451,1456,1461,1466,1471],{"title":1428,"path":1424,"stem":1429,"description":1430},"Dethereal — Claude Code Plugin for Threat Modeling","03.dethereal\u002Findex","Comprehensive documentation for the Dethereal threat modeling plugin",{"title":1432,"path":1433,"stem":1434,"description":1435},"Getting Started with Dethereal","\u002Fdethereal\u002Fgetting-started","03.dethereal\u002F01.getting-started","Install the plugin, authenticate, and create your first threat model",{"title":1437,"path":1438,"stem":1439,"description":1440},"The 11-Step Guided Workflow","\u002Fdethereal\u002Fguided-workflow","03.dethereal\u002F02.guided-workflow","Complete walkthrough of the \u002Fdethereal:threat-model guided process",{"title":1442,"path":1443,"stem":1444,"description":1445},"Command Reference","\u002Fdethereal\u002Fcommand-reference","03.dethereal\u002F03.command-reference","Complete reference for all 14 Dethereal slash commands",{"title":1447,"path":1448,"stem":1449,"description":1450},"Threat Model Concepts","\u002Fdethereal\u002Fmodel-concepts","03.dethereal\u002F04.model-concepts","Components, boundaries, data flows, classes, attributes, and quality scoring",{"title":1452,"path":1453,"stem":1454,"description":1455},"Discovery and Enrichment","\u002Fdethereal\u002Fdiscovery-and-enrichment","03.dethereal\u002F05.discovery-and-enrichment","Infrastructure scanning, security attributes, MITRE ATT&CK, credentials, and compliance",{"title":1457,"path":1458,"stem":1459,"description":1460},"Sync and Version Control","\u002Fdethereal\u002Fsync-and-version-control","03.dethereal\u002F06.sync-and-version-control","Push\u002Fpull workflow, conflict handling, git integration, and multi-model projects",{"title":1462,"path":1463,"stem":1464,"description":1465},"Review and Attack Surface Analysis","\u002Fdethereal\u002Freview-and-analysis","03.dethereal\u002F07.review-and-analysis","Quality review, attack surface summary, and platform analysis integration",{"title":1467,"path":1468,"stem":1469,"description":1470},"Agents, Tools, and Hooks","\u002Fdethereal\u002Fagents-and-architecture","03.dethereal\u002F08.agents-and-architecture","How the 5 AI agents, 22 MCP tools, and 3 lifecycle hooks work together",{"title":1472,"path":1473,"stem":1474,"description":1475},"Dethereal Glossary","\u002Fdethereal\u002Fglossary","03.dethereal\u002F09.glossary","Definitions for Dethereal-specific terminology",{"title":1477,"description":1478,"path":1479,"stem":1480,"children":1481,"page":-1},"Threat Report","The residual-risk report over a threat model: reading it, filtering it and exporting it.","\u002Fthreat-report","04.threat-report",[1482,1485,1490,1495,1500,1505],{"title":1477,"path":1479,"stem":1483,"description":1484},"04.threat-report\u002Findex","Read, filter, drill into, and export a residual-risk report over a threat model",{"title":1486,"path":1487,"stem":1488,"description":1489},"Getting Started with the Threat Report","\u002Fthreat-report\u002Fgetting-started","04.threat-report\u002F01.getting-started","Generate, open, refresh, and export a threat report over a model",{"title":1491,"path":1492,"stem":1493,"description":1494},"Reading the Report","\u002Fthreat-report\u002Freading-the-report","04.threat-report\u002F02.reading-the-report","Navigating the report, the shared visual language, and the Posture and Boundary Crossings views",{"title":1496,"path":1497,"stem":1498,"description":1499},"Understanding Coverage and Gaps","\u002Fthreat-report\u002Funderstanding-coverage","04.threat-report\u002F03.understanding-coverage","Reading the MITRE ATT&CK coverage matrix: tiers, prevent vs detect, off-grid notes, and what coverage does and does not mean",{"title":1501,"path":1502,"stem":1503,"description":1504},"Reachability and Flow Routes","\u002Fthreat-report\u002Freachability","04.threat-report\u002F04.reachability","Exploring flow routes to crown-jewel assets and between any two elements — and what the analysis does and does not model",{"title":1506,"path":1507,"stem":1508,"description":1509},"Working with Findings","\u002Fthreat-report\u002Fworking-with-findings","04.threat-report\u002F05.working-with-findings","The Residual Risk ledger, triaging findings, filtering, and the per-element Component Profile",{"title":1511,"description":1512,"path":1513,"stem":1514,"children":1515,"page":-1},"Risk assessment","The risk assessment module: the register, the reports and the method behind them.","\u002Frisk-assessment","05.risk-assessment",[1516,1520,1525,1530,1535,1540,1544,1549],{"title":1517,"path":1513,"stem":1518,"description":1519},"Dethernety Risk Assessment User Guide","05.risk-assessment\u002Findex","Dethernety Risk Assessment turns a threat model you have built on the Dethernety platform into a grounded, board-ready draft risk report. From one point-in-time assessment of your model you get a prioritized worklist, a likelihood × impact risk matrix, a security-coverage posture, ten kinds of finding, a management risk register your team authors and maintains, and audience-tiered stakeholder reports — Board, Risk Committee, and Technical — plus machine-readable data exports.",{"title":1521,"path":1522,"stem":1523,"description":1524},"FAQ and Troubleshooting","\u002Frisk-assessment\u002Ffaq","05.risk-assessment\u002F01.faq","Short answers to the questions analysts, risk managers, and compliance officers ask most often about the Risk Assessment. Each answer links to the guide that covers it in full.",{"title":1526,"path":1527,"stem":1528,"description":1529},"Findings","\u002Frisk-assessment\u002Ffindings","05.risk-assessment\u002F02.findings","A finding is a specific observation the Risk Assessment makes about your threat model. Every finding is grounded in something concrete you have declared — an element, a data flow, a trust zone, a crown jewel — and it points you at a place worth a closer look. This guide is the reference to open when you see a finding and want to know what it means and what to do about it.",{"title":1531,"path":1532,"stem":1533,"description":1534},"Getting Started","\u002Frisk-assessment\u002Fgetting-started","05.risk-assessment\u002F03.getting-started","Risk Assessment turns a threat model you have built on the Dethernety platform into a grounded, board-ready draft risk report — a prioritized worklist, a likelihood × impact matrix, a security-coverage posture, ten kinds of finding, a risk register your team authors, and audience-tiered stakeholder reports and exports.",{"title":1536,"path":1537,"stem":1538,"description":1539},"Methodology and Trust","\u002Frisk-assessment\u002Fmethodology-and-trust","05.risk-assessment\u002F04.methodology-and-trust","Every number in a Risk Assessment is meant to survive scrutiny. This chapter explains why you can trust the report and — just as importantly — what it deliberately declines to claim, so you can put it in front of your board, a regulator, or an external auditor and defend every line.",{"title":1491,"path":1541,"stem":1542,"description":1543},"\u002Frisk-assessment\u002Freading-the-report","05.risk-assessment\u002F05.reading-the-report","The Risk Assessment turns your threat model into a single, scannable draft risk report: an executive summary at the top and a set of analytical tabs below it. This guide explains how to read what you see — what a matrix cell means, how coverage is stated, what a severity band is (and is not), and how to interpret each tab.",{"title":1545,"path":1546,"stem":1547,"description":1548},"Stakeholder Reports and Exports","\u002Frisk-assessment\u002Fstakeholder-reports","05.risk-assessment\u002F06.stakeholder-reports","One assessment produces reporting for every audience you answer to. From a single generated Risk Assessment you can hand your board a one-page brief, give your risk committee the full reconciliation, keep the complete technical detail for your own team, and export the underlying data into your GRC tool — without ever re-running anything or reconciling one document against another.",{"title":1550,"path":1551,"stem":1552,"description":1553},"The Risk Register","\u002Frisk-assessment\u002Fthe-risk-register","05.risk-assessment\u002F07.the-risk-register","The Risk Register is where your team records and manages the real risks your organisation is carrying — on top of, but separate from, what the analysis computed for you. Each entry is written by a person: a plain-language risk statement, your own assessment of how likely it is and how much it would hurt, the findings and elements from the analysis that back it up, a treatment decision, an owner, a review date, and a reference handle you can quote in a ticket or a board pack.",{"title":1555,"description":1556,"path":1557,"stem":1558,"children":1559,"page":-1},"Threat Patterns","The Threat Patterns module and its modelling checklist.","\u002Fthreat-patterns","06.threat-patterns",[1560,1564],{"title":1561,"path":1557,"stem":1562,"description":1563},"Threat Patterns User Guide","06.threat-patterns\u002Findex","Threat Patterns finds threats in your model that no single element shows on its own. Each one appears only when several elements line up. For example, an agent may read content anyone can write, hold private data, and be able to send data where an outsider reads it. Each element can look acceptable alone, but together they form a path an attacker can use.",{"title":1565,"path":1566,"stem":1567,"description":1568},"Modelling Checklist","\u002Fthreat-patterns\u002Fmodelling-checklist","06.threat-patterns\u002F01.modelling-checklist","Threat Patterns decides a leg only from what your model states. An unanswered attribute or field is undetermined, never read as \"no\". This checklist lists the facts and drawings the analysis asks for most often. For each one it says where to set it and which leg it settles. Attribute names are shown as they appear on the class, in code.",{"title":1570,"description":1571,"path":19,"stem":1572,"children":1573,"page":-1},"Agentic modelling","A hands-on training: model one agentic system step by step, with Threat Patterns after each step.","07.agentic-modelling",[1574,1578,1583,1588,1593,1598,1603,1608,1613,1618,1622,1623,1627],{"title":1575,"path":19,"stem":1576,"description":1577},"Model an Agentic Architecture","07.agentic-modelling\u002Findex","A hands-on training in modelling systems that run AI agents, so that Threat Patterns can analyse them. You build one system, a fictional customer-support copilot, in eleven short lessons. Each lesson adds one thing to the model, and you run Threat Patterns after each one to see what the change did.",{"title":1579,"path":1580,"stem":1581,"description":1582},"Lesson 1: Draw the Agent and What It Talks To","\u002Fagentic-modelling\u002F01-draw-the-agent","07.agentic-modelling\u002F01.01-draw-the-agent","Training overview · Lesson 1 of 11 · Next: Say what data moves",{"title":1584,"path":1585,"stem":1586,"description":1587},"Lesson 2: Say What Data Moves","\u002Fagentic-modelling\u002F02-say-what-data-moves","07.agentic-modelling\u002F02.02-say-what-data-moves","Training overview · Lesson 2 of 11 · Previous: Draw the agent · Next: Mark who is outside",{"title":1589,"path":1590,"stem":1591,"description":1592},"Lesson 3: Mark Who Is Outside","\u002Fagentic-modelling\u002F03-mark-who-is-outside","07.agentic-modelling\u002F03.03-mark-who-is-outside","Training overview · Lesson 3 of 11 · Previous: Say what data moves · Next: Draw a tool that reaches any host",{"title":1594,"path":1595,"stem":1596,"description":1597},"Lesson 4: Draw a Tool That Reaches Any Host","\u002Fagentic-modelling\u002F04-draw-a-tool-that-reaches-any-host","07.agentic-modelling\u002F04.04-draw-a-tool-that-reaches-any-host","Training overview · Lesson 4 of 11 · Previous: Mark who is outside · Next: State what the agent can do",{"title":1599,"path":1600,"stem":1601,"description":1602},"Lesson 5: State What the Agent Can Do","\u002Fagentic-modelling\u002F05-state-what-the-agent-can-do","07.agentic-modelling\u002F05.05-state-what-the-agent-can-do","Training overview · Lesson 5 of 11 · Previous: Draw a tool that reaches any host · Next: Fix a finding with a fact",{"title":1604,"path":1605,"stem":1606,"description":1607},"Lesson 6: Fix a Finding With a Fact","\u002Fagentic-modelling\u002F06-fix-a-finding-with-a-fact","07.agentic-modelling\u002F06.06-fix-a-finding-with-a-fact","Training overview · Lesson 6 of 11 · Previous: State what the agent can do · Next: Record a compensating control",{"title":1609,"path":1610,"stem":1611,"description":1612},"Lesson 7: Record a Compensating Control","\u002Fagentic-modelling\u002F07-record-a-compensating-control","07.agentic-modelling\u002F07.07-record-a-compensating-control","Training overview · Lesson 7 of 11 · Previous: Fix a finding with a fact · Next: Leave what you don't know open",{"title":1614,"path":1615,"stem":1616,"description":1617},"Lesson 8: Leave What You Don't Know Open","\u002Fagentic-modelling\u002F08-leave-unknowns-open","07.agentic-modelling\u002F08.08-leave-unknowns-open","Training overview · Lesson 8 of 11 · Previous: Record a compensating control · Next: Follow a credential",{"title":1619,"path":24,"stem":1620,"description":1621},"Lesson 9: Follow a Credential","07.agentic-modelling\u002F09.09-follow-a-credential","Training overview · Lesson 9 of 11 · Previous: Leave what you don't know open · Next: Watch what gets into knowledge and memory",{"title":5,"path":1326,"stem":1328,"description":1322},{"title":1624,"path":29,"stem":1625,"description":1626},"Lesson 11: Draw Tools From Others and Hand-offs","07.agentic-modelling\u002F11.11-tools-and-handoffs","Training overview · Lesson 11 of 11 · Previous: Watch what gets into knowledge and memory",{"title":1628,"path":1629,"stem":1630,"description":1631},"The recipe at a glance","\u002Fagentic-modelling\u002Frecipe-at-a-glance","07.agentic-modelling\u002F12.recipe-at-a-glance","The ten steps of the training on one page. Each lesson teaches one or two of them.",{"title":1633,"description":1634,"path":1635,"stem":1636,"children":1637,"page":-1},"BYODt subscription","Subscribing on the BYODt Portal, and moving a deployment you already run to a new team.","\u002Fbyodt-subscription","08.byodt-subscription",[1638,1642,1647],{"title":1639,"path":1635,"stem":1640,"description":1641},"BYODt Subscription","08.byodt-subscription\u002Findex","Buy content for the deployment you run yourself, and decide where that deployment goes when you buy a team edition",{"title":1643,"path":1644,"stem":1645,"description":1646},"Your Subscription","\u002Fbyodt-subscription\u002Fyour-subscription","08.byodt-subscription\u002F01.your-subscription","Create an account, subscribe by card, and find the values your deployment needs on the portal",{"title":1648,"path":1649,"stem":1650,"description":1651},"Moving a Deployment to a New Team","\u002Fbyodt-subscription\u002Fmoving-a-deployment-to-a-new-team","08.byodt-subscription\u002F02.moving-a-deployment-to-a-new-team","What to do with the deployment you already run once you buy a team edition: three ways forward, best first",1793748186648]