{"id":22660,"date":"2026-06-23T13:14:05","date_gmt":"2026-06-23T11:14:05","guid":{"rendered":"https:\/\/mjolner.dk\/?p=22660"},"modified":"2026-06-23T13:18:23","modified_gmt":"2026-06-23T11:18:23","slug":"agentic-coding","status":"publish","type":"post","link":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/","title":{"rendered":"Agentic Coding"},"content":{"rendered":"<h1>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-0\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-0\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-0\" data-testid=\"conversation-turn-2\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"24da6c26-79b7-4c01-9849-0a7688ac3c03\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"77\" data-is-last-node=\"\" data-is-only-node=\"\"><strong data-start=\"0\" data-end=\"77\" data-is-last-node=\"\" data-is-only-node=\"\">Agentic coding: Is your setup secure before you give the AI agent access?<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"z-0 flex min-h-[46px] justify-start\"><\/div>\n<div class=\"mt-3 w-full empty:hidden\">\n<div class=\"text-center\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div aria-hidden=\"true\" class=\"pointer-events-none -mt-px h-px translate-y-[calc(var(--scroll-root-safe-area-inset-bottom)-14*var(--spacing))]\"><\/div>\n<\/h1>\n<div>\n<p><strong>You have a new colleague in the office. She is tireless, fast, and extremely confident. Agentic coding can feel like having a new junior developer on the team, but she does not behave like the flesh-and-blood kind. So how do you get security under control before handing your new colleague the keys to everything you can access yourself?<\/strong><\/p>\n<p>There is great potential in\u00a0<a href=\"https:\/\/mjolner.dk\/indsigt\/blog\/fra-autocomplete-til-medudvikler-60-kollegaer-dykkede-ned-i-github-copilot\/\">agentic coding<\/a>, but it also comes with risks. Because when we give AI agents access to code, we are effectively also giving them access to a range of systems, decisions, and actions that can have consequences if the setup is not properly secured.<\/p>\n<p>In this blog post, Lead Security Engineer <a href=\"https:\/\/www.linkedin.com\/in\/madssandersen\/\">Mads Schaarup Andersen <\/a>explains where organisations should start before AI agents become a permanent part of the development environment.<\/p>\n<\/div>\n<div>\n<h2>Get started!<\/h2>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-4\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-4\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-4\" data-testid=\"conversation-turn-10\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"7c31ac56-6c38-4193-bde8-58f4273a2f37\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"274\" data-is-last-node=\"\" data-is-only-node=\"\">This may seem like an obvious point, but a surprising number of organisations run into problems because they do not get started in time. As a leader, you can be absolutely certain that employees are already actively using agentic coding, whether you are ready for it or not.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<blockquote>\n<div class=\"\" data-turn-id-container=\"00a19209-d47e-4b51-a48d-82912bda23ac\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"00a19209-d47e-4b51-a48d-82912bda23ac\" data-turn-id-container=\"00a19209-d47e-4b51-a48d-82912bda23ac\" data-testid=\"conversation-turn-11\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-5\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-5\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-5\" data-testid=\"conversation-turn-12\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"dc70d31c-dfe0-4db2-b491-9840822ae176\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"296\" data-is-last-node=\"\" data-is-only-node=\"\">\u201cIt is not about painting a frightening picture, but about seizing the opportunity in the fact that you have skilled employees who are already using AI tools. As management, it is your responsibility to communicate the expectations and opportunities. Even if you do not have all the answers yet\u201d<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<footer>\n<p>                <cite>Mads emphasises.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<p>AI policies and threat modelling are processes that will evolve over time. If you decide to build an elaborate framework before involving your employees, you are almost certainly already behind.<\/p>\n<\/div>\n<blockquote>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"6e02b8a3-7a56-469c-8f7d-3e926c91fd10\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"6e02b8a3-7a56-469c-8f7d-3e926c91fd10\" data-turn-id-container=\"6e02b8a3-7a56-469c-8f7d-3e926c91fd10\" data-testid=\"conversation-turn-19\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-9\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-9\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-9\" data-testid=\"conversation-turn-20\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"65de32e0-cfa0-4ebf-9f7e-073c226fb676\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"186\" data-is-last-node=\"\" data-is-only-node=\"\">\u201cIt is not about achieving the highest level of maturity from day one. Ask, build, and adapt. Otherwise, you risk designing a setup that does not actually fit the developers\u2019 workflows\u201d<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"z-0 flex min-h-[46px] justify-start\"><\/div>\n<div class=\"mt-3 w-full empty:hidden\">\n<div class=\"text-center\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div aria-hidden=\"true\" class=\"pointer-events-none -mt-px h-px translate-y-[calc(var(--scroll-root-safe-area-inset-bottom)-14*var(--spacing))]\"><\/div>\n<footer>\n<p>                <cite>Mads states.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<h2>Understand the threat model<\/h2>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-12\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-12\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-12\" data-testid=\"conversation-turn-26\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"8a0c8882-d9c7-4d0f-b30b-311c4153e206\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"296\" data-is-last-node=\"\" data-is-only-node=\"\">With AI as a partner, we are moving into new territory. And like any explorer, you need to map the terrain you are about to explore. That is why you should start with a threat model: What needs to be protected, who or what could compromise it, and what would the consequences be if that happened?<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<div class=\"\" data-turn-id-container=\"b9bc9105-33c6-423b-a58a-68abdd51d772\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"b9bc9105-33c6-423b-a58a-68abdd51d772\" data-turn-id-container=\"b9bc9105-33c6-423b-a58a-68abdd51d772\" data-testid=\"conversation-turn-27\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-13\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-13\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-13\" data-testid=\"conversation-turn-28\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"36797ecd-c5a1-417d-973b-cdf536d4891a\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"205\" data-is-last-node=\"\" data-is-only-node=\"\">\u201cBefore you let AI loose in your development environment, you need to understand what is involved in an agent-based coding process. Which data flows where, and where in that flow could something go wrong?\u201d<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<footer>\n<p>                <cite>says Mads.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<div class=\"\" data-turn-id-container=\"febad228-4c83-4050-aaa3-44a3591279dc\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"febad228-4c83-4050-aaa3-44a3591279dc\" data-turn-id-container=\"febad228-4c83-4050-aaa3-44a3591279dc\" data-testid=\"conversation-turn-31\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-15\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-15\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-15\" data-testid=\"conversation-turn-32\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"96a650c6-c1a8-470c-8082-98a269415cd0\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"300\">Start by understanding that there are many components at play when you work with agent-based coding. There is the model, the LLM, that you connect to; there are resources in the local environment on the developers\u2019 machines; agent plugins, MCP servers, custom agents, and skills \u2014 just to name a few.<\/p>\n<p data-start=\"302\" data-end=\"411\">By default, the agent may be able to access every part of the setup. But ask yourselves: is that appropriate?<\/p>\n<p data-start=\"413\" data-end=\"721\" data-is-last-node=\"\" data-is-only-node=\"\">It is also important to think in terms of malicious manipulation. An agent is not only influenced by what the user writes directly. It can also be affected by so-called injection attacks, where malicious instructions are added to the workflow from, for example, a manipulated plugin or a compromised website.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div>\n<h2>Upskill and involve developers<\/h2>\n<div class=\"\" data-turn-id-container=\"85aa191a-e92b-4198-b03f-f76584196de4\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"85aa191a-e92b-4198-b03f-f76584196de4\" data-turn-id-container=\"85aa191a-e92b-4198-b03f-f76584196de4\" data-testid=\"conversation-turn-35\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-17\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-17\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-17\" data-testid=\"conversation-turn-36\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"ca3da66f-a771-42e0-8dcc-7249776946ab\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"247\">Even the best rules and security measures only work if developers understand why they exist and how to use them in their day-to-day work. That is why it is the organisation\u2019s responsibility to equip developers to work securely with agentic coding.<\/p>\n<p data-start=\"249\" data-end=\"352\" data-is-last-node=\"\" data-is-only-node=\"\">And it is absolutely critical to both success and security that developers are involved in the process:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<blockquote>\n<div class=\"\" data-turn-id-container=\"9a9ee462-1bab-4710-b256-3bc306c65057\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"9a9ee462-1bab-4710-b256-3bc306c65057\" data-turn-id-container=\"9a9ee462-1bab-4710-b256-3bc306c65057\" data-testid=\"conversation-turn-37\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-18\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-18\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-18\" data-testid=\"conversation-turn-38\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"49465d95-5cca-4cdf-be7f-3581f31a1fcc\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"201\">\u201cYour employees are not going to seek out this knowledge on their own. As an organisation, you need to involve and motivate them \u2014 and, not least, listen to how developers are actually working with AI.<\/p>\n<p data-start=\"203\" data-end=\"315\" data-is-last-node=\"\" data-is-only-node=\"\">If you do not ask, incorrect assumptions may lead you to a place where policy and practice live separate lives.\u201d<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<footer>\n<p>                <cite>Mads points out. <\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<p>This includes teaching developers to recognise risks such as prompt injection, insecure plugins, uncritical package installation, sharing secrets, and overly broad permissions. Use recognised resources such as <a href=\"https:\/\/owasp.org\/\">OWASP<\/a>, internal guidelines, and concrete examples from your own development environments to make security practical and relevant.<\/p>\n<\/div>\n<blockquote>\n<p>\u201cGive developers access to good security resources so they know how to protect both code and data when AI becomes part of the toolbox\u201d<\/p>\n<footer>\n<p>                <cite>says Mads.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<div class=\"\" data-turn-id-container=\"bf456e70-ae4e-4eeb-99c3-8945b1a65b22\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"bf456e70-ae4e-4eeb-99c3-8945b1a65b22\" data-turn-id-container=\"bf456e70-ae4e-4eeb-99c3-8945b1a65b22\" data-testid=\"conversation-turn-43\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-21\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-21\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-21\" data-testid=\"conversation-turn-44\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"78964c6a-4df6-4d4b-a60b-dcc91a77f67f\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"189\" data-is-last-node=\"\" data-is-only-node=\"\">At the same time, developers should know when to pause and ask for approval \u2014 for example, before the agent is given access to new tools, external services, production data, or credentials.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div>\n<h2>Establish governance and risk management<\/h2>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-23\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-23\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-23\" data-testid=\"conversation-turn-48\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"b6bfcf17-f32e-4f62-8eaf-71d9ca23d55a\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-24\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-24\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-24\" data-testid=\"conversation-turn-50\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"0f8b9e84-9e76-4682-8371-45be27fb03ca\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"190\">When AI agents are given access to your development environment, it is not enough to trust that they will behave correctly, or that each individual developer has all the risks under control.<\/p>\n<p data-start=\"192\" data-end=\"390\" data-is-last-node=\"\" data-is-only-node=\"\">As an organisation, you need to set the framework through governance: clearly defined rules for which skills, plugins, MCP servers, and CLI tools may be used, and how they are installed and managed.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"z-0 flex min-h-[46px] justify-start\"><\/div>\n<div class=\"mt-3 w-full empty:hidden\">\n<div class=\"text-center\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div aria-hidden=\"true\" class=\"pointer-events-none -mt-px h-px translate-y-[calc(var(--scroll-root-safe-area-inset-bottom)-14*var(--spacing))]\"><\/div>\n<\/div>\n<blockquote>\n<p>\u201cMake sure you have clear rules and governance in place, so no one can simply install random AI plugins or connect to external services where both trade secrets and personal data could end up being leaked.\u201d<\/p>\n<footer>\n<p>                <cite>is Mads\u2019 advice.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<blockquote>\n<p>\u201cIt should not be up to each individual developer to assess whether a random plugin, MCP server, or external service is secure enough.\u201d<\/p>\n<footer>\n<p>                <cite>he adds.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<p>A good rule of thumb is to view the agent as any other part of your software supply chain: it must be assessed, approved, updated, and removable again if it turns out to pose a risk.<\/p>\n<\/div>\n<div>\n<h2>Implement security tools and sandboxes<\/h2>\n<p data-start=\"0\" data-end=\"87\">Governance sets the framework. Technical security measures must enforce it in practice.<\/p>\n<p data-start=\"89\" data-end=\"283\" data-is-last-node=\"\" data-is-only-node=\"\">Use, for example, sandboxes, containers, or isolated development environments so the agent cannot freely read the entire file system, change critical files, or run commands without restrictions.<\/p>\n<\/div>\n<blockquote>\n<p>\u201cUse the built-in security features so AI cannot perform critical actions such as deleting production data. It is easy to overlook, but it can be costly.\u201d<\/p>\n<footer>\n<p>                <cite>Mads emphasises.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<div>\n<p data-start=\"0\" data-end=\"293\">Security scans, agent hooks, and approval gates can help stop risky actions before they happen. This could include requiring human approval before the agent installs packages, changes CI\/CD configuration, uses secrets, deletes files, pushes code, or attempts to access production environments.<\/p>\n<p data-start=\"295\" data-end=\"484\" data-is-last-node=\"\" data-is-only-node=\"\">Security features should not simply be enabled once and then forgotten. They should be tested continuously, so you know whether they actually stop the actions they were designed to prevent.<\/p>\n<\/div>\n<div>\n<div class=\"qMYqUG_convSearchResultHighlightRoot\">\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-36\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-36\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-36\" data-testid=\"conversation-turn-74\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"553a0af2-3027-44b9-aac7-7636a63f4fe7\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<h2 data-start=\"0\" data-end=\"57\">Summary: Five security recommendations to get you started<\/h2>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<div class=\"\" data-turn-id-container=\"580e4ad9-d9b6-4de1-90a9-9578d40c476a\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"580e4ad9-d9b6-4de1-90a9-9578d40c476a\" data-turn-id-container=\"580e4ad9-d9b6-4de1-90a9-9578d40c476a\" data-testid=\"conversation-turn-75\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-37\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-37\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-37\" data-testid=\"conversation-turn-76\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"efd19e8f-1a9d-42f4-b808-3c4f86021724\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"242\">Mads\u2019 key point is that agentic coding is rapidly making its way into development environments. In many organisations, it is already in use \u2014 perhaps in yours too. That is why the work on security, governance, and risk management cannot wait. Start here:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<ul>\n<li data-start=\"0\" data-end=\"148\"><strong data-start=\"0\" data-end=\"20\">Get started now.<\/strong> Do not wait for the perfect framework. Set the direction, expectations, and boundaries while you learn, and adapt continuously.<\/li>\n<li data-start=\"150\" data-end=\"330\"><strong data-start=\"150\" data-end=\"182\">Start with the threat model.<\/strong> Get an overview of what needs to be protected, which data flows where, which components are part of your setup, and where something could go wrong.<\/li>\n<li data-start=\"332\" data-end=\"539\"><strong data-start=\"332\" data-end=\"367\">Upskill and involve developers.<\/strong> Security needs to fit the way developers actually work. That is why they should be involved from the start \u2014 as users, sparring partners, and co-creators of the framework.<\/li>\n<li data-start=\"541\" data-end=\"746\"><strong data-start=\"541\" data-end=\"601\">Set clear boundaries for governance and risk management.<\/strong> It should not be up to the individual developer to assess which plugins, MCP servers, skills, CLI tools, or external services are secure enough.<\/li>\n<li data-start=\"748\" data-end=\"990\"><strong data-start=\"748\" data-end=\"807\">Enforce the framework with technical security measures.<\/strong> Use sandboxes, containers, security scans, agent hooks, and approval gates so the agent cannot freely access files, credentials, production data, or critical systems without control.<\/li>\n<\/ul>\n<p data-start=\"0\" data-end=\"339\">Initially, it is the responsibility of the organisation and management to create a secure framework. Not the individual developer\u2019s. Because agentic coding is going to play a bigger role, and the organisations that get started now will be in a stronger position than those that only react once the AI agent has already been given the keys.<\/p>\n<p data-start=\"341\" data-end=\"422\" data-is-last-node=\"\" data-is-only-node=\"\">Mads concludes with a reminder that not everyone is starting from the same place:<\/p>\n<\/div>\n<blockquote>\n<div class=\"\" data-turn-id-container=\"68e98af2-3f61-4d76-a2ab-09c7a8198726\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\" dir=\"auto\" data-turn-id=\"68e98af2-3f61-4d76-a2ab-09c7a8198726\" data-turn-id-container=\"68e98af2-3f61-4d76-a2ab-09c7a8198726\" data-testid=\"conversation-turn-81\" data-turn=\"user\"><\/section>\n<\/div>\n<div class=\"\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-40\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-40\" data-turn-id-container=\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-40\" data-testid=\"conversation-turn-82\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div data-conversation-screenshot-content=\"\" class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div data-message-author-role=\"assistant\" data-message-id=\"197c7d35-9916-4297-9594-657fa59b57bd\" dir=\"auto\" data-message-model-slug=\"gpt-5-5-thinking\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"288\" data-is-last-node=\"\" data-is-only-node=\"\">\u201cIt is not enough to test on yourself or your three closest colleagues. The security measures need to work for the entire organisation in practice. Not everyone is an AI expert, and we need to be careful of blind spots. That is why it is so important to involve employees from the start.\u201d<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<footer>\n<p>                <cite>Mads concludes.<\/cite><\/p>\n<\/footer>\n<\/blockquote>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/06\/Mads-til-blog_portraet-scaled.jpg\" alt=\"Lead Security Engineer Mads Schaarup Andersen\"><\/p>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"\n\n<div class=\\\"qMYqUG_convSearchResultHighlightRoot\\\">\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-0\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-0\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-0\\\" data-testid=\\\"conversation-turn-2\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"24da6c26-79b7-4c01-9849-0a7688ac3c03\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"77\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\"><strong data-start=\\\"0\\\" data-end=\\\"77\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">Agentic coding: Is your setup secure before you give the AI agent access?<\\\/strong><\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div class=\\\"z-0 flex min-h-[46px] justify-start\\\"><\\\/div>\\n\n\n<div class=\\\"mt-3 w-full empty:hidden\\\">\\n\n\n<div class=\\\"text-center\\\"><\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div aria-hidden=\\\"true\\\" class=\\\"pointer-events-none -mt-px h-px translate-y-[calc(var(--scroll-root-safe-area-inset-bottom)-14*var(--spacing))]\\\"><\\\/div>\",\"title_element\":\"h1\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p><strong>You have a new colleague in the office. She is tireless, fast, and extremely confident. Agentic coding can feel like having a new junior developer on the team, but she does not behave like the flesh-and-blood kind. So how do you get security under control before handing your new colleague the keys to everything you can access yourself?<\\\/strong><\\\/p>\\n\n\n<p>There is great potential in\\u00a0<a href=\\\"https:\\\/\\\/mjolner.dk\\\/indsigt\\\/blog\\\/fra-autocomplete-til-medudvikler-60-kollegaer-dykkede-ned-i-github-copilot\\\/\\\">agentic coding<\\\/a>, but it also comes with risks. Because when we give AI agents access to code, we are effectively also giving them access to a range of systems, decisions, and actions that can have consequences if the setup is not properly secured.<\\\/p>\\n\n\n<p>In this blog post, Lead Security Engineer <a href=\\\"https:\\\/\\\/www.linkedin.com\\\/in\\\/madssandersen\\\/\\\">Mads Schaarup Andersen <\\\/a>explains where organisations should start before AI agents become a permanent part of the development environment.<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<h2>Get started!<\\\/h2>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-4\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-4\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-4\\\" data-testid=\\\"conversation-turn-10\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"7c31ac56-6c38-4193-bde8-58f4273a2f37\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"274\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">This may seem like an obvious point, but a surprising number of organisations run into problems because they do not get started in time. As a leader, you can be absolutely certain that employees are already actively using agentic coding, whether you are ready for it or not.<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"Mads emphasises.\",\"content\":\"\n\n<div class=\\\"\\\" data-turn-id-container=\\\"00a19209-d47e-4b51-a48d-82912bda23ac\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"00a19209-d47e-4b51-a48d-82912bda23ac\\\" data-turn-id-container=\\\"00a19209-d47e-4b51-a48d-82912bda23ac\\\" data-testid=\\\"conversation-turn-11\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-5\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-5\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-5\\\" data-testid=\\\"conversation-turn-12\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"dc70d31c-dfe0-4db2-b491-9840822ae176\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"296\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">\\u201cIt is not about painting a frightening picture, but about seizing the opportunity in the fact that you have skilled employees who are already using AI tools. As management, it is your responsibility to communicate the expectations and opportunities. Even if you do not have all the answers yet\\u201d<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p>AI policies and threat modelling are processes that will evolve over time. If you decide to build an elaborate framework before involving your employees, you are almost certainly already behind.<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"Mads states.\",\"content\":\"\n\n<div class=\\\"qMYqUG_convSearchResultHighlightRoot\\\">\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"6e02b8a3-7a56-469c-8f7d-3e926c91fd10\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"6e02b8a3-7a56-469c-8f7d-3e926c91fd10\\\" data-turn-id-container=\\\"6e02b8a3-7a56-469c-8f7d-3e926c91fd10\\\" data-testid=\\\"conversation-turn-19\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-9\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-9\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-9\\\" data-testid=\\\"conversation-turn-20\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"65de32e0-cfa0-4ebf-9f7e-073c226fb676\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"186\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">\\u201cIt is not about achieving the highest level of maturity from day one. Ask, build, and adapt. Otherwise, you risk designing a setup that does not actually fit the developers\\u2019 workflows\\u201d<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div class=\\\"z-0 flex min-h-[46px] justify-start\\\"><\\\/div>\\n\n\n<div class=\\\"mt-3 w-full empty:hidden\\\">\\n\n\n<div class=\\\"text-center\\\"><\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div aria-hidden=\\\"true\\\" class=\\\"pointer-events-none -mt-px h-px translate-y-[calc(var(--scroll-root-safe-area-inset-bottom)-14*var(--spacing))]\\\"><\\\/div>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<h2>Understand the threat model<\\\/h2>\\n\n\n<div class=\\\"qMYqUG_convSearchResultHighlightRoot\\\">\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-12\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-12\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-12\\\" data-testid=\\\"conversation-turn-26\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"8a0c8882-d9c7-4d0f-b30b-311c4153e206\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"296\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">With AI as a partner, we are moving into new territory. And like any explorer, you need to map the terrain you are about to explore. That is why you should start with a threat model: What needs to be protected, who or what could compromise it, and what would the consequences be if that happened?<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n<\\\/div>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"says Mads.\",\"content\":\"\n\n<div class=\\\"\\\" data-turn-id-container=\\\"b9bc9105-33c6-423b-a58a-68abdd51d772\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"b9bc9105-33c6-423b-a58a-68abdd51d772\\\" data-turn-id-container=\\\"b9bc9105-33c6-423b-a58a-68abdd51d772\\\" data-testid=\\\"conversation-turn-27\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-13\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-13\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-13\\\" data-testid=\\\"conversation-turn-28\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"36797ecd-c5a1-417d-973b-cdf536d4891a\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"205\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">\\u201cBefore you let AI loose in your development environment, you need to understand what is involved in an agent-based coding process. Which data flows where, and where in that flow could something go wrong?\\u201d<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<div class=\\\"\\\" data-turn-id-container=\\\"febad228-4c83-4050-aaa3-44a3591279dc\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"febad228-4c83-4050-aaa3-44a3591279dc\\\" data-turn-id-container=\\\"febad228-4c83-4050-aaa3-44a3591279dc\\\" data-testid=\\\"conversation-turn-31\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-15\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-15\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-15\\\" data-testid=\\\"conversation-turn-32\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"96a650c6-c1a8-470c-8082-98a269415cd0\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"300\\\">Start by understanding that there are many components at play when you work with agent-based coding. There is the model, the LLM, that you connect to; there are resources in the local environment on the developers\\u2019 machines; agent plugins, MCP servers, custom agents, and skills \\u2014 just to name a few.<\\\/p>\\n\n\n<p data-start=\\\"302\\\" data-end=\\\"411\\\">By default, the agent may be able to access every part of the setup. But ask yourselves: is that appropriate?<\\\/p>\\n\n\n<p data-start=\\\"413\\\" data-end=\\\"721\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">It is also important to think in terms of malicious manipulation. An agent is not only influenced by what the user writes directly. It can also be affected by so-called injection attacks, where malicious instructions are added to the workflow from, for example, a manipulated plugin or a compromised website.<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\",\"margin\":\"default\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<h2>Upskill and involve developers<\\\/h2>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"85aa191a-e92b-4198-b03f-f76584196de4\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"85aa191a-e92b-4198-b03f-f76584196de4\\\" data-turn-id-container=\\\"85aa191a-e92b-4198-b03f-f76584196de4\\\" data-testid=\\\"conversation-turn-35\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-17\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-17\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-17\\\" data-testid=\\\"conversation-turn-36\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"ca3da66f-a771-42e0-8dcc-7249776946ab\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"247\\\">Even the best rules and security measures only work if developers understand why they exist and how to use them in their day-to-day work. That is why it is the organisation\\u2019s responsibility to equip developers to work securely with agentic coding.<\\\/p>\\n\n\n<p data-start=\\\"249\\\" data-end=\\\"352\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">And it is absolutely critical to both success and security that developers are involved in the process:<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"Mads points out. \",\"content\":\"\n\n<div class=\\\"\\\" data-turn-id-container=\\\"9a9ee462-1bab-4710-b256-3bc306c65057\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"9a9ee462-1bab-4710-b256-3bc306c65057\\\" data-turn-id-container=\\\"9a9ee462-1bab-4710-b256-3bc306c65057\\\" data-testid=\\\"conversation-turn-37\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-18\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-18\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-18\\\" data-testid=\\\"conversation-turn-38\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"49465d95-5cca-4cdf-be7f-3581f31a1fcc\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"201\\\">\\u201cYour employees are not going to seek out this knowledge on their own. As an organisation, you need to involve and motivate them \\u2014 and, not least, listen to how developers are actually working with AI.<\\\/p>\\n\n\n<p data-start=\\\"203\\\" data-end=\\\"315\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">If you do not ask, incorrect assumptions may lead you to a place where policy and practice live separate lives.\\u201d<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p>This includes teaching developers to recognise risks such as prompt injection, insecure plugins, uncritical package installation, sharing secrets, and overly broad permissions. Use recognised resources such as <a href=\\\"https:\\\/\\\/owasp.org\\\/\\\">OWASP<\\\/a>, internal guidelines, and concrete examples from your own development environments to make security practical and relevant.<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"says Mads.\",\"content\":\"\n\n<p>\\u201cGive developers access to good security resources so they know how to protect both code and data when AI becomes part of the toolbox\\u201d<\\\/p>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<div class=\\\"\\\" data-turn-id-container=\\\"bf456e70-ae4e-4eeb-99c3-8945b1a65b22\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"bf456e70-ae4e-4eeb-99c3-8945b1a65b22\\\" data-turn-id-container=\\\"bf456e70-ae4e-4eeb-99c3-8945b1a65b22\\\" data-testid=\\\"conversation-turn-43\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-21\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-21\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-21\\\" data-testid=\\\"conversation-turn-44\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"78964c6a-4df6-4d4b-a60b-dcc91a77f67f\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"189\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">At the same time, developers should know when to pause and ask for approval \\u2014 for example, before the agent is given access to new tools, external services, production data, or credentials.<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\",\"margin\":\"default\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<h2>Establish governance and risk management<\\\/h2>\\n\n\n<div class=\\\"qMYqUG_convSearchResultHighlightRoot\\\">\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-23\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-23\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-23\\\" data-testid=\\\"conversation-turn-48\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"b6bfcf17-f32e-4f62-8eaf-71d9ca23d55a\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-24\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-24\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-24\\\" data-testid=\\\"conversation-turn-50\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"0f8b9e84-9e76-4682-8371-45be27fb03ca\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"190\\\">When AI agents are given access to your development environment, it is not enough to trust that they will behave correctly, or that each individual developer has all the risks under control.<\\\/p>\\n\n\n<p data-start=\\\"192\\\" data-end=\\\"390\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">As an organisation, you need to set the framework through governance: clearly defined rules for which skills, plugins, MCP servers, and CLI tools may be used, and how they are installed and managed.<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div class=\\\"z-0 flex min-h-[46px] justify-start\\\"><\\\/div>\\n\n\n<div class=\\\"mt-3 w-full empty:hidden\\\">\\n\n\n<div class=\\\"text-center\\\"><\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div aria-hidden=\\\"true\\\" class=\\\"pointer-events-none -mt-px h-px translate-y-[calc(var(--scroll-root-safe-area-inset-bottom)-14*var(--spacing))]\\\"><\\\/div>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"is Mads\\u2019 advice.\",\"content\":\"\n\n<p>\\u201cMake sure you have clear rules and governance in place, so no one can simply install random AI plugins or connect to external services where both trade secrets and personal data could end up being leaked.\\u201d<\\\/p>\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"he adds.\",\"content\":\"\n\n<p>\\u201cIt should not be up to each individual developer to assess whether a random plugin, MCP server, or external service is secure enough.\\u201d<\\\/p>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p>A good rule of thumb is to view the agent as any other part of your software supply chain: it must be assessed, approved, updated, and removable again if it turns out to pose a risk.<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<h2>Implement security tools and sandboxes<\\\/h2>\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"87\\\">Governance sets the framework. Technical security measures must enforce it in practice.<\\\/p>\\n\n\n<p data-start=\\\"89\\\" data-end=\\\"283\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">Use, for example, sandboxes, containers, or isolated development environments so the agent cannot freely read the entire file system, change critical files, or run commands without restrictions.<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"Mads emphasises.\",\"content\":\"\n\n<p>\\u201cUse the built-in security features so AI cannot perform critical actions such as deleting production data. It is easy to overlook, but it can be costly.\\u201d<\\\/p>\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p data-start=\\\"0\\\" data-end=\\\"293\\\">Security scans, agent hooks, and approval gates can help stop risky actions before they happen. This could include requiring human approval before the agent installs packages, changes CI\\\/CD configuration, uses secrets, deletes files, pushes code, or attempts to access production environments.<\\\/p>\\n\n\n<p data-start=\\\"295\\\" data-end=\\\"484\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">Security features should not simply be enabled once and then forgotten. They should be tested continuously, so you know whether they actually stop the actions they were designed to prevent.<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<div class=\\\"qMYqUG_convSearchResultHighlightRoot\\\">\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-36\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-36\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-36\\\" data-testid=\\\"conversation-turn-74\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"553a0af2-3027-44b9-aac7-7636a63f4fe7\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<h2 data-start=\\\"0\\\" data-end=\\\"57\\\">Summary: Five security recommendations to get you started<\\\/h2>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"580e4ad9-d9b6-4de1-90a9-9578d40c476a\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"580e4ad9-d9b6-4de1-90a9-9578d40c476a\\\" data-turn-id-container=\\\"580e4ad9-d9b6-4de1-90a9-9578d40c476a\\\" data-testid=\\\"conversation-turn-75\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-37\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-37\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-37\\\" data-testid=\\\"conversation-turn-76\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"efd19e8f-1a9d-42f4-b808-3c4f86021724\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"242\\\">Mads\\u2019 key point is that agentic coding is rapidly making its way into development environments. In many organisations, it is already in use \\u2014 perhaps in yours too. That is why the work on security, governance, and risk management cannot wait. Start here:<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\\n\n\n<ul>\\n\n\n<li data-start=\\\"0\\\" data-end=\\\"148\\\"><strong data-start=\\\"0\\\" data-end=\\\"20\\\">Get started now.<\\\/strong> Do not wait for the perfect framework. Set the direction, expectations, and boundaries while you learn, and adapt continuously.<\\\/li>\\n\n\n<li data-start=\\\"150\\\" data-end=\\\"330\\\"><strong data-start=\\\"150\\\" data-end=\\\"182\\\">Start with the threat model.<\\\/strong> Get an overview of what needs to be protected, which data flows where, which components are part of your setup, and where something could go wrong.<\\\/li>\\n\n\n<li data-start=\\\"332\\\" data-end=\\\"539\\\"><strong data-start=\\\"332\\\" data-end=\\\"367\\\">Upskill and involve developers.<\\\/strong> Security needs to fit the way developers actually work. That is why they should be involved from the start \\u2014 as users, sparring partners, and co-creators of the framework.<\\\/li>\\n\n\n<li data-start=\\\"541\\\" data-end=\\\"746\\\"><strong data-start=\\\"541\\\" data-end=\\\"601\\\">Set clear boundaries for governance and risk management.<\\\/strong> It should not be up to the individual developer to assess which plugins, MCP servers, skills, CLI tools, or external services are secure enough.<\\\/li>\\n\n\n<li data-start=\\\"748\\\" data-end=\\\"990\\\"><strong data-start=\\\"748\\\" data-end=\\\"807\\\">Enforce the framework with technical security measures.<\\\/strong> Use sandboxes, containers, security scans, agent hooks, and approval gates so the agent cannot freely access files, credentials, production data, or critical systems without control.<\\\/li>\\n<\\\/ul>\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"339\\\">Initially, it is the responsibility of the organisation and management to create a secure framework. Not the individual developer\\u2019s. Because agentic coding is going to play a bigger role, and the organisations that get started now will be in a stronger position than those that only react once the AI agent has already been given the keys.<\\\/p>\\n\n\n<p data-start=\\\"341\\\" data-end=\\\"422\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">Mads concludes with a reminder that not everyone is starting from the same place:<\\\/p>\",\"margin\":\"default\"}},{\"type\":\"quotation\",\"props\":{\"author\":\"Mads concludes.\",\"content\":\"\n\n<div class=\\\"\\\" data-turn-id-container=\\\"68e98af2-3f61-4d76-a2ab-09c7a8198726\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-(--sticky-padding-top)\\\" dir=\\\"auto\\\" data-turn-id=\\\"68e98af2-3f61-4d76-a2ab-09c7a8198726\\\" data-turn-id-container=\\\"68e98af2-3f61-4d76-a2ab-09c7a8198726\\\" data-testid=\\\"conversation-turn-81\\\" data-turn=\\\"user\\\"><\\\/section>\\n<\\\/div>\\n\n\n<div class=\\\"\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-40\\\" data-is-intersecting=\\\"true\\\">\\n\n\n<section class=\\\"text-token-text-primary w-full focus:outline-none has-data-writing-block:pointer-events-none [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\\\" dir=\\\"auto\\\" data-turn-id=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-40\\\" data-turn-id-container=\\\"request-WEB:1ee432e2-e2d3-42e8-a0fa-190dc8b3c15c-40\\\" data-testid=\\\"conversation-turn-82\\\" data-turn=\\\"assistant\\\">\\n\n\n<div class=\\\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\\\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\\\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\\\">\\n\n\n<div data-conversation-screenshot-content=\\\"\\\" class=\\\"[--thread-content-max-width:40rem] @w-lg\\\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\\\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\\\">\\n\n\n<div class=\\\"flex max-w-full flex-col gap-4 grow\\\">\\n\n\n<div data-message-author-role=\\\"assistant\\\" data-message-id=\\\"197c7d35-9916-4297-9594-657fa59b57bd\\\" dir=\\\"auto\\\" data-message-model-slug=\\\"gpt-5-5-thinking\\\" class=\\\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\\\" data-turn-start-message=\\\"true\\\" tabindex=\\\"0\\\">\\n\n\n<div class=\\\"flex w-full flex-col gap-1 empty:hidden\\\">\\n\n\n<div class=\\\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\\\">\\n\n\n<p data-start=\\\"0\\\" data-end=\\\"288\\\" data-is-last-node=\\\"\\\" data-is-only-node=\\\"\\\">\\u201cIt is not enough to test on yourself or your three closest colleagues. The security measures need to work for the entire organisation in practice. Not everyone is an AI expert, and we need to be careful of blind spots. That is why it is so important to involve employees from the start.\\u201d<\\\/p>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/div>\\n<\\\/section>\\n<\\\/div>\"}},{\"type\":\"image\",\"props\":{\"image\":\"wp-content\\\/uploads\\\/2026\\\/06\\\/Mads-til-blog_portraet-scaled.jpg\",\"image_alt\":\"Lead Security Engineer Mads Schaarup Andersen\",\"image_svg_color\":\"emphasis\",\"margin\":\"default\"}}]}]}],\"name\":\"Agentic coding \"}],\"version\":\"4.4.2\",\"yooessentialsVersion\":\"2.2.14\"} --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Agentic coding: Is your setup secure before you give the AI agent access? You have a new colleague in the office. She is tireless, fast, and extremely confident. Agentic coding can feel like having a new junior developer on the team, but she does not behave like the flesh-and-blood kind. So how do you get [&hellip;]<\/p>\n","protected":false},"author":30,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[161],"tags":[],"class_list":["post-22660","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agentic Coding - Mj\u00f8lner<\/title>\n<meta name=\"description\" content=\"Secure your agentic coding setup with threat modelling, governance, developer involvement and technical safeguards\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agentic Coding - Mj\u00f8lner\" \/>\n<meta property=\"og:description\" content=\"Secure your agentic coding setup with threat modelling, governance, developer involvement and technical safeguards\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\" \/>\n<meta property=\"og:site_name\" content=\"Mj\u00f8lner\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MjolnerInformatics\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-23T11:14:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-23T11:18:23+00:00\" \/>\n<meta name=\"author\" content=\"Pernille Fisker Jensen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mjolnerdk\" \/>\n<meta name=\"twitter:site\" content=\"@mjolnerdk\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pernille Fisker Jensen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\"},\"author\":{\"name\":\"Pernille Fisker Jensen\",\"@id\":\"https:\/\/mjolner.dk\/en\/#\/schema\/person\/110678de48db58cce206666f44e87427\"},\"headline\":\"Agentic Coding\",\"datePublished\":\"2026-06-23T11:14:05+00:00\",\"dateModified\":\"2026-06-23T11:18:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\"},\"wordCount\":1389,\"publisher\":{\"@id\":\"https:\/\/mjolner.dk\/en\/#organization\"},\"articleSection\":[\"Uncategorized uk\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\",\"url\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\",\"name\":\"Agentic Coding - Mj\u00f8lner\",\"isPartOf\":{\"@id\":\"https:\/\/mjolner.dk\/en\/#website\"},\"datePublished\":\"2026-06-23T11:14:05+00:00\",\"dateModified\":\"2026-06-23T11:18:23+00:00\",\"description\":\"Secure your agentic coding setup with threat modelling, governance, developer involvement and technical safeguards\",\"breadcrumb\":{\"@id\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Hjem\",\"item\":\"https:\/\/mjolner.dk\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agentic Coding\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mjolner.dk\/en\/#website\",\"url\":\"https:\/\/mjolner.dk\/en\/\",\"name\":\"Mj\u00f8lner\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/mjolner.dk\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mjolner.dk\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/mjolner.dk\/en\/#organization\",\"name\":\"Mj\u00f8lner\",\"url\":\"https:\/\/mjolner.dk\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mjolner.dk\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/mjolner.dk\/wp-content\/uploads\/2017\/11\/logo-white-8.svg\",\"contentUrl\":\"https:\/\/mjolner.dk\/wp-content\/uploads\/2017\/11\/logo-white-8.svg\",\"width\":1,\"height\":1,\"caption\":\"Mj\u00f8lner\"},\"image\":{\"@id\":\"https:\/\/mjolner.dk\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/MjolnerInformatics\/\",\"https:\/\/x.com\/mjolnerdk\",\"https:\/\/www.linkedin.com\/company\/mjolner-informatics-as\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/mjolner.dk\/en\/#\/schema\/person\/110678de48db58cce206666f44e87427\",\"name\":\"Pernille Fisker Jensen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mjolner.dk\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a41e0b54dc295e35e38408d8203607e20e36d1cf6fdd18dd2cade85561364e3a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a41e0b54dc295e35e38408d8203607e20e36d1cf6fdd18dd2cade85561364e3a?s=96&d=mm&r=g\",\"caption\":\"Pernille Fisker Jensen\"},\"url\":\"https:\/\/mjolner.dk\/en\/author\/pernille\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agentic Coding - Mj\u00f8lner","description":"Secure your agentic coding setup with threat modelling, governance, developer involvement and technical safeguards","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/","og_locale":"en_US","og_type":"article","og_title":"Agentic Coding - Mj\u00f8lner","og_description":"Secure your agentic coding setup with threat modelling, governance, developer involvement and technical safeguards","og_url":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/","og_site_name":"Mj\u00f8lner","article_publisher":"https:\/\/www.facebook.com\/MjolnerInformatics\/","article_published_time":"2026-06-23T11:14:05+00:00","article_modified_time":"2026-06-23T11:18:23+00:00","author":"Pernille Fisker Jensen","twitter_card":"summary_large_image","twitter_creator":"@mjolnerdk","twitter_site":"@mjolnerdk","twitter_misc":{"Written by":"Pernille Fisker Jensen","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/#article","isPartOf":{"@id":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/"},"author":{"name":"Pernille Fisker Jensen","@id":"https:\/\/mjolner.dk\/en\/#\/schema\/person\/110678de48db58cce206666f44e87427"},"headline":"Agentic Coding","datePublished":"2026-06-23T11:14:05+00:00","dateModified":"2026-06-23T11:18:23+00:00","mainEntityOfPage":{"@id":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/"},"wordCount":1389,"publisher":{"@id":"https:\/\/mjolner.dk\/en\/#organization"},"articleSection":["Uncategorized uk"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/","url":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/","name":"Agentic Coding - Mj\u00f8lner","isPartOf":{"@id":"https:\/\/mjolner.dk\/en\/#website"},"datePublished":"2026-06-23T11:14:05+00:00","dateModified":"2026-06-23T11:18:23+00:00","description":"Secure your agentic coding setup with threat modelling, governance, developer involvement and technical safeguards","breadcrumb":{"@id":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/mjolner.dk\/en\/uncategorized\/agentic-coding\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Hjem","item":"https:\/\/mjolner.dk\/en\/"},{"@type":"ListItem","position":2,"name":"Agentic Coding"}]},{"@type":"WebSite","@id":"https:\/\/mjolner.dk\/en\/#website","url":"https:\/\/mjolner.dk\/en\/","name":"Mj\u00f8lner","description":"","publisher":{"@id":"https:\/\/mjolner.dk\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mjolner.dk\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/mjolner.dk\/en\/#organization","name":"Mj\u00f8lner","url":"https:\/\/mjolner.dk\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mjolner.dk\/en\/#\/schema\/logo\/image\/","url":"https:\/\/mjolner.dk\/wp-content\/uploads\/2017\/11\/logo-white-8.svg","contentUrl":"https:\/\/mjolner.dk\/wp-content\/uploads\/2017\/11\/logo-white-8.svg","width":1,"height":1,"caption":"Mj\u00f8lner"},"image":{"@id":"https:\/\/mjolner.dk\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/MjolnerInformatics\/","https:\/\/x.com\/mjolnerdk","https:\/\/www.linkedin.com\/company\/mjolner-informatics-as\/"]},{"@type":"Person","@id":"https:\/\/mjolner.dk\/en\/#\/schema\/person\/110678de48db58cce206666f44e87427","name":"Pernille Fisker Jensen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mjolner.dk\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a41e0b54dc295e35e38408d8203607e20e36d1cf6fdd18dd2cade85561364e3a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a41e0b54dc295e35e38408d8203607e20e36d1cf6fdd18dd2cade85561364e3a?s=96&d=mm&r=g","caption":"Pernille Fisker Jensen"},"url":"https:\/\/mjolner.dk\/en\/author\/pernille\/"}]}},"_links":{"self":[{"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/posts\/22660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/comments?post=22660"}],"version-history":[{"count":27,"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/posts\/22660\/revisions"}],"predecessor-version":[{"id":22687,"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/posts\/22660\/revisions\/22687"}],"wp:attachment":[{"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/media?parent=22660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/categories?post=22660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjolner.dk\/en\/wp-json\/wp\/v2\/tags?post=22660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}