{"id":2159,"date":"2026-10-11T20:20:45","date_gmt":"2026-10-11T14:50:45","guid":{"rendered":"https:\/\/judepereira.com\/blog\/?p=2159"},"modified":"2026-10-11T21:26:06","modified_gmt":"2026-10-11T15:56:06","slug":"building-jupiter-security-sandboxing-ideas","status":"publish","type":"post","link":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/","title":{"rendered":"Building Jupiter: Security Sandboxing Ideas"},"content":{"rendered":"\n<figure class=\"wp-block-pullquote has-medium-font-size\" style=\"padding-top:30px;padding-bottom:30px\"><blockquote><p>This post follows <a href=\"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/\" target=\"_blank\" rel=\"noopener\"><em>Why I Decided To Build My Own Agentic IDE<\/em><\/a>, and is a part of the series <em><a href=\"https:\/\/judepereira.com\/blog\/category\/building-jupiter\/\" target=\"_blank\" rel=\"noopener\">Building Jupiter<\/a>.<\/em><br><\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">There are numerous techniques that a rogue AI agent may employ to access to something that it shouldn\u2019t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s talk about some of these:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Credentials such as your cloud deployment key, or your private SSH key that permits passwordless access to your production workloads<\/li>\n\n\n\n<li>Unrestricted network access that lets an agent communicate with the outside world, potentially even shipping some of your confidential data (proprietary algorithms for example) to a message board to ask for advice<\/li>\n\n\n\n<li>Unfettered access to temporary access tokens generated on your behalf for MCPs and CLI access (accessible from Claude or Codex\u2019s database stored on your MacBook or Linux server)<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">These naturally pose a threat that could very well be exploited by a capable agent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading is-style-default\">Incident: A Rogue Agent in Jupiter<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">During the early days of Jupiter, its MCP integration was laughable, where it didn\u2019t understand nested data structures and arrays. As a result, when an agent tried to use the GitHub MCP to list PRs, the MCP call would fail repeatedly. Out of desperation, it resorted to enumerating the values in its environment, found a GitHub private authentication token (PAT), and issued a curl command to GitHub\u2019s API. Granted, it did accomplish what it set out to do, but this wasn\u2019t the intended method. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PS &#8211; Jupiter tackles this issue smartly. Continue reading below :)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Guardrails Fallacy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Whenever I talk about this problem to colleagues or friends, their common response is, \u201cwell, let\u2019s add some guardrails &#8211; tell the agent what it can and cannot do\u201d. Are you serious? No amount of prompting security measures is going to let me sleep peacefully at night. Guardrails, simply put, are \u201csoft limits\u201d. Imagine a human child &#8211; you tell them to wait for ten minutes until their chocolate lava cake cools down, so that they don\u2019t burn their tongue. What\u2019s the probability that they\u2019d follow through, especially if this is their first ever chocolate lava cake?<\/p>\n\n\n\n<h2 class=\"wp-block-heading is-style-default\">The Network Layer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An agent must only be granted that what it needs in order to accomplish its task. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"676\" data-attachment-id=\"2201\" data-permalink=\"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/screenshot-2026-10-11-at-14-33-24-3\/\" data-orig-file=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?fit=1487%2C982&amp;ssl=1\" data-orig-size=\"1487,982\" data-comments-opened=\"1\" data-image-title=\"Screenshot 2026-10-11 at 14.33.24\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?fit=1024%2C676&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=1024%2C676&#038;ssl=1\" alt=\"\" class=\"wp-image-2201\" srcset=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=1024%2C676&amp;ssl=1 1024w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=300%2C198&amp;ssl=1 300w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=150%2C99&amp;ssl=1 150w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=768%2C507&amp;ssl=1 768w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?w=1487&amp;ssl=1 1487w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s talk about the network:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Whitelist trusted domains that are essential to do its work, such as GitHub.com, and software package vendors (Maven Central, NPM). Start with a complete lockdown, and then discover step by step which domains are required. <\/li>\n\n\n\n<li>Restrict access to the agent control plane itself. Frequently, as is the case with Jupiter too, the control plane itself can reveal sensitive data such as API keys. Password protecting this ensures that a rogue agent cannot use its own control plane to gain unfettered access. <\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">The Execution Environment<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Next, let\u2019s take a look into the operating environment of an agent. With many users running Claude or Codex with unrestricted command execution, the agent is free to inspect its environment, modify frequently used commands, along with shell initialisation scripts. What can you do?<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Run your agent in a container, or a VM<\/li>\n\n\n\n<li>Encrypt its harness&#8217; database, but please don\u2019t leak the encryption key as an environment variable<\/li>\n\n\n\n<li>Protect environment variables (a clever approach is to pipe the entire env from one user into another user, in order to prevent making them available under \/proc) &#8211; Linux\u2019s user safety mechanisms won\u2019t let one user access another user\u2019s process environment<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Putting It Together<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-2\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"637\" data-attachment-id=\"2200\" data-permalink=\"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/screenshot-2026-10-11-at-14-33-13-3\/\" data-orig-file=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?fit=1517%2C944&amp;ssl=1\" data-orig-size=\"1517,944\" data-comments-opened=\"1\" data-image-title=\"Screenshot 2026-10-11 at 14.33.13\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?fit=1024%2C637&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?resize=1024%2C637&#038;ssl=1\" alt=\"\" class=\"wp-image-2200\" srcset=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?resize=1024%2C637&amp;ssl=1 1024w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?resize=300%2C187&amp;ssl=1 300w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?resize=150%2C93&amp;ssl=1 150w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?resize=768%2C478&amp;ssl=1 768w, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.13-2.png?w=1517&amp;ssl=1 1517w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019ve tried to tackle all of these potential attack vectors while building Jupiter:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Encrypted database, ensuring that the key cannot be leaked to a rogue agent<\/li>\n\n\n\n<li>A network sandbox &#8211; my current implementation is whitelisting domains and permitting IPv4 access on demand, based on DNS resolutions (dnsmasq + nftables). This, however, lives in a Docker compose setup &#8211; <a href=\"https:\/\/github.com\/judepereira\/oc-sandbox\" target=\"_blank\" rel=\"noopener\">judepereira\/oc-sandbox<\/a>, but will be ported over to Jupiter natively soon :)<\/li>\n\n\n\n<li>Environment variables are piped in through stdin, and are stripped from the environment before forking Jupiter itself<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Closing Thoughts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI agents are incredibly powerful. Before you run them in dangerous modes, consider potential attack vectors carefully, and do what you need to do to sleep peacefully at night (or be an owl, that\u2019s up to you). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I cannot stress this enough, but understand what you do, and why. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Don\u2019t be a sheep, be a shepherd.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few ideas about security sandboxing your AI agents, so that you don&#8217;t wake up to a rogue agent one fine day.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[744,732,722],"tags":[735,709,740,672,737,739,546,726,736,733,734,741,252,738],"class_list":["post-2159","post","type-post","status-publish","format-standard","hentry","category-building-jupiter","category-jupiter","category-virtual-engineering","tag-agent","tag-ai","tag-claude","tag-cli","tag-cloud-agents","tag-codex","tag-coding","tag-cursor","tag-harness","tag-jupiter","tag-opencode","tag-rogue","tag-security","tag-self-hosted"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"A few ideas about security sandboxing your AI agents, so that you don&#039;t wake up to a rogue agent one fine day.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Jude Pereira\"\/>\n\t<meta name=\"keywords\" content=\"agent,ai,claude,cli,cloud agents,codex,coding,cursor,harness,jupiter,opencode,rogue,security,self hosted,building jupiter,virtual engineering\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"@judepereira | Fleeting Thoughts\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Building Jupiter: Security Sandboxing Ideas | @judepereira\" \/>\n\t\t<meta property=\"og:description\" content=\"A few ideas about security sandboxing your AI agents, so that you don&#039;t wake up to a rogue agent one fine day.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1487\" \/>\n\t\t<meta property=\"og:image:height\" content=\"793\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-11T14:50:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-11T15:56:06+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@judebpereira\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Building Jupiter: Security Sandboxing Ideas | @judepereira\" \/>\n\t\t<meta name=\"twitter:description\" content=\"A few ideas about security sandboxing your AI agents, so that you don&#039;t wake up to a rogue agent one fine day.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@judebpereira\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#article\",\"name\":\"Building Jupiter: Security Sandboxing Ideas | @judepereira\",\"headline\":\"Building Jupiter: Security Sandboxing Ideas\",\"author\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/judepereira.com\\\/blog\\\/wp-content\\\/uploads\\\/Screenshot-2026-10-11-at-14.33.24-2.png?fit=1487%2C982&ssl=1\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#articleImage\",\"width\":1487,\"height\":982},\"datePublished\":\"2026-10-11T20:20:45+05:30\",\"dateModified\":\"2026-10-11T21:26:06+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#webpage\"},\"articleSection\":\"Building Jupiter, Jupiter, Virtual Engineering, agent, ai, Claude, cli, cloud agents, codex, coding, cursor, harness, Jupiter, opencode, rogue, security, self hosted\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/#listItem\",\"name\":\"Virtual Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/#listItem\",\"position\":2,\"name\":\"Virtual Engineering\",\"item\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/#listItem\",\"name\":\"Jupiter\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/#listItem\",\"position\":3,\"name\":\"Jupiter\",\"item\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#listItem\",\"name\":\"Building Jupiter: Security Sandboxing Ideas\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/#listItem\",\"name\":\"Virtual Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#listItem\",\"position\":4,\"name\":\"Building Jupiter: Security Sandboxing Ideas\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/#listItem\",\"name\":\"Jupiter\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#person\",\"name\":\"Jude Pereira\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g\",\"width\":96,\"height\":96,\"caption\":\"Jude Pereira\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Jude Pereira\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g\",\"width\":96,\"height\":96,\"caption\":\"Jude Pereira\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#webpage\",\"url\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/\",\"name\":\"Building Jupiter: Security Sandboxing Ideas | @judepereira\",\"description\":\"A few ideas about security sandboxing your AI agents, so that you don't wake up to a rogue agent one fine day.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-security-sandboxing-ideas\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2026-10-11T20:20:45+05:30\",\"dateModified\":\"2026-10-11T21:26:06+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/\",\"name\":\"@judepereira\",\"description\":\"Fleeting Thoughts\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Building Jupiter: Security Sandboxing Ideas | @judepereira","description":"A few ideas about security sandboxing your AI agents, so that you don't wake up to a rogue agent one fine day.","canonical_url":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/","robots":"max-image-preview:large","keywords":"agent,ai,claude,cli,cloud agents,codex,coding,cursor,harness,jupiter,opencode,rogue,security,self hosted,building jupiter,virtual engineering","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#article","name":"Building Jupiter: Security Sandboxing Ideas | @judepereira","headline":"Building Jupiter: Security Sandboxing Ideas","author":{"@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/judepereira.com\/blog\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?fit=1487%2C982&ssl=1","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#articleImage","width":1487,"height":982},"datePublished":"2026-10-11T20:20:45+05:30","dateModified":"2026-10-11T21:26:06+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#webpage"},"isPartOf":{"@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#webpage"},"articleSection":"Building Jupiter, Jupiter, Virtual Engineering, agent, ai, Claude, cli, cloud agents, codex, coding, cursor, harness, Jupiter, opencode, rogue, security, self hosted"},{"@type":"BreadcrumbList","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/judepereira.com\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/#listItem","name":"Virtual Engineering"}},{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/#listItem","position":2,"name":"Virtual Engineering","item":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/","nextItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/#listItem","name":"Jupiter"},"previousItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/#listItem","position":3,"name":"Jupiter","item":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/","nextItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#listItem","name":"Building Jupiter: Security Sandboxing Ideas"},"previousItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/#listItem","name":"Virtual Engineering"}},{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#listItem","position":4,"name":"Building Jupiter: Security Sandboxing Ideas","previousItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/#listItem","name":"Jupiter"}}]},{"@type":"Person","@id":"https:\/\/judepereira.com\/blog\/#person","name":"Jude Pereira","image":{"@type":"ImageObject","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g","width":96,"height":96,"caption":"Jude Pereira"}},{"@type":"Person","@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author","url":"https:\/\/judepereira.com\/blog\/author\/admin\/","name":"Jude Pereira","image":{"@type":"ImageObject","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g","width":96,"height":96,"caption":"Jude Pereira"}},{"@type":"WebPage","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#webpage","url":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/","name":"Building Jupiter: Security Sandboxing Ideas | @judepereira","description":"A few ideas about security sandboxing your AI agents, so that you don't wake up to a rogue agent one fine day.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/judepereira.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/#breadcrumblist"},"author":{"@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author"},"datePublished":"2026-10-11T20:20:45+05:30","dateModified":"2026-10-11T21:26:06+05:30"},{"@type":"WebSite","@id":"https:\/\/judepereira.com\/blog\/#website","url":"https:\/\/judepereira.com\/blog\/","name":"@judepereira","description":"Fleeting Thoughts","inLanguage":"en-US","publisher":{"@id":"https:\/\/judepereira.com\/blog\/#person"}}]},"og:locale":"en_US","og:site_name":"@judepereira | Fleeting Thoughts","og:type":"article","og:title":"Building Jupiter: Security Sandboxing Ideas | @judepereira","og:description":"A few ideas about security sandboxing your AI agents, so that you don't wake up to a rogue agent one fine day.","og:url":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/","og:image":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png","og:image:secure_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png","og:image:width":1487,"og:image:height":793,"article:published_time":"2026-10-11T14:50:45+00:00","article:modified_time":"2026-10-11T15:56:06+00:00","twitter:card":"summary","twitter:site":"@judebpereira","twitter:title":"Building Jupiter: Security Sandboxing Ideas | @judepereira","twitter:description":"A few ideas about security sandboxing your AI agents, so that you don't wake up to a rogue agent one fine day.","twitter:creator":"@judebpereira","twitter:image":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png"},"aioseo_meta_data":{"post_id":"2159","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"custom_image","og_image_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png","og_image_width":"1487","og_image_height":"793","og_image_custom_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png","og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"custom_image","twitter_image_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png","twitter_image_custom_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-4.png","twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-21 09:11:31","updated":"2026-10-11 15:56:06","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/judepereira.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/\" title=\"Virtual Engineering\">Virtual Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/\" title=\"Jupiter\">Jupiter<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tBuilding Jupiter: Security Sandboxing Ideas\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/judepereira.com\/blog\/"},{"label":"Virtual Engineering","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/"},{"label":"Jupiter","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/"},{"label":"Building Jupiter: Security Sandboxing Ideas","link":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/"}],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pqtyx-yP","jetpack-related-posts":[{"id":2157,"url":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/","url_meta":{"origin":2159,"position":0},"title":"Building Jupiter: Why I Decided To Build My Own Agentic IDE","author":"Jude Pereira","date":"September 28, 2026","format":false,"excerpt":"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.","rel":"","context":"In &quot;Building Jupiter&quot;","block_context":{"text":"Building Jupiter","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/building-jupiter\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1950,"url":"https:\/\/judepereira.com\/blog\/getting-the-aws-cli-to-accept-cloudflare-warps-root-certificate\/","url_meta":{"origin":2159,"position":1},"title":"Getting the AWS CLI to accept Cloudflare WARP&#8217;s root certificate","author":"Jude Pereira","date":"August 11, 2021","format":false,"excerpt":"Download, convert, and install the Cloudflare WARP root certificate into your local set of trusted root CAs, and then tell the AWS CLI to use it.","rel":"","context":"In &quot;miscellaneous&quot;","block_context":{"text":"miscellaneous","link":"https:\/\/judepereira.com\/blog\/category\/misc\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2139,"url":"https:\/\/judepereira.com\/blog\/when-to-delegate-work-to-a-virtual-engineer\/","url_meta":{"origin":2159,"position":2},"title":"When to Delegate Work to a Virtual Engineer","author":"Jude Pereira","date":"November 23, 2025","format":false,"excerpt":"With rapid advances in the field of engineering, when should you delegate work to a virtual engineer? Furthermore, what is a virtual engineer?","rel":"","context":"In &quot;Virtual Engineering&quot;","block_context":{"text":"Virtual Engineering","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/v2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/v2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/v2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/v2.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/v2.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/v2.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1979,"url":"https:\/\/judepereira.com\/blog\/mac-m1-m2-keyboard-brightness-keys-remap-%c2%a7-to\/","url_meta":{"origin":2159,"position":3},"title":"Mac M1\/M2: Keyboard Brightness Keys + Remap \u00a7 to ~","author":"Jude Pereira","date":"April 15, 2023","format":false,"excerpt":"Remap the section key to the tilde key, and bring back the keyboard brightness keys to the MacBook M1\/M2 machines.","rel":"","context":"In &quot;miscellaneous&quot;","block_context":{"text":"miscellaneous","link":"https:\/\/judepereira.com\/blog\/category\/misc\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1734,"url":"https:\/\/judepereira.com\/blog\/why-matchbox-and-how-it-connects-people-through-music\/","url_meta":{"origin":2159,"position":4},"title":"Why Matchbox, and how it connects people through music","author":"Jude Pereira","date":"January 21, 2017","format":false,"excerpt":"There's no doubt that music defines us. It influences our moods, for example, making us happy by releasing a chemical named dopamine. It can affect what we wear, what we eat, and perhaps even who we enjoy being together with. It affects\u00a0our thought process too (it's well known that ambient\u2026","rel":"","context":"In &quot;android&quot;","block_context":{"text":"android","link":"https:\/\/judepereira.com\/blog\/category\/code\/android\/"},"img":{"alt_text":"Matchbox showing the top 10 artists","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/IMG_7195-300x210.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1830,"url":"https:\/\/judepereira.com\/blog\/ios-mac-ipsec\/","url_meta":{"origin":2159,"position":5},"title":"How to tunnel all traffic from your iOS device to your own server via IPSec","author":"Jude Pereira","date":"May 11, 2018","format":false,"excerpt":"TL;DR: A DigitalOcean droplet, strongSwan, and a custom Configuration Profile for iOS routes all the traffic from my iPhone via my droplet. Why? Just because I can. Note: This setup does not require you to download Apple Configurator and switch your iPhone into Supervised mode (we will create a configuration\u2026","rel":"","context":"In &quot;gnu linux&quot;","block_context":{"text":"gnu linux","link":"https:\/\/judepereira.com\/blog\/category\/linux\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screen-Shot-2018-05-10-at-20.34.32-1024x134.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screen-Shot-2018-05-10-at-20.34.32-1024x134.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screen-Shot-2018-05-10-at-20.34.32-1024x134.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/2159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/comments?post=2159"}],"version-history":[{"count":29,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/2159\/revisions"}],"predecessor-version":[{"id":2238,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/2159\/revisions\/2238"}],"wp:attachment":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/media?parent=2159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/categories?post=2159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/tags?post=2159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}