<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Caio Labesten on Medium]]></title>
        <description><![CDATA[Stories by Caio Labesten on Medium]]></description>
        <link>https://medium.com/@caiovlf?source=rss-9349fde658fa------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*mPOH7FXEyDF0OI_tFDFiRA.jpeg</url>
            <title>Stories by Caio Labesten on Medium</title>
            <link>https://medium.com/@caiovlf?source=rss-9349fde658fa------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 17 May 2026 19:21:28 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@caiovlf/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[HTML vs. Markdown for AI Agent Outputs: The New Debate Around Readability, Tokens, and Developer…]]></title>
            <link>https://medium.com/@caiovlf/html-vs-markdown-for-ai-agent-outputs-the-new-debate-around-readability-tokens-and-developer-0d72813a7771?source=rss-9349fde658fa------2</link>
            <guid isPermaLink="false">https://medium.com/p/0d72813a7771</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[developer-tools]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <dc:creator><![CDATA[Caio Labesten]]></dc:creator>
            <pubDate>Fri, 15 May 2026 23:43:50 GMT</pubDate>
            <atom:updated>2026-05-15T23:43:50.447Z</atom:updated>
            <content:encoded><![CDATA[<h3>HTML vs. Markdown for AI Agent Outputs: The New Debate Around Readability, Tokens, and Developer Workflows</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vTXJEygH05j5MczhXHOLQw.png" /></figure><p>For years, Markdown has quietly been the default language of collaboration between humans and AI.</p><p>We ask coding agents to create implementation plans, summarize pull requests, explain architectures, document decisions, and produce technical reports. Most of the time, the answer comes back in Markdown: headings, bullets, tables, code blocks, and maybe a diagram if the model feels generous.</p><p>And honestly, that made sense.</p><p>Markdown is lightweight, readable before rendering, easy to version, friendly to Git diffs, and simple enough for both humans and models to write. It became the natural interface between developers and AI agents because it sits in a useful middle ground: structured enough to be practical, but not so complex that it gets in the way.</p><p>But a recent discussion around Claude Code challenged that default.</p><p>The argument was simple, but interesting: maybe Markdown is not always the best format for AI generated outputs. Maybe, in some situations, HTML is a better medium, especially when the goal is not just to produce text, but to help people understand, navigate, and act on complex information.</p><p>At first glance, this sounds like a formatting debate.<br>It is not.</p><p>The real question is about how AI agents should communicate complex work. Should they produce plain, durable, versionable documents? Or should they generate richer, more visual artifacts that feel closer to small applications than static notes?</p><p>As usual in software, the answer is not “HTML wins” or “Markdown wins.”<br>The more useful answer is: <strong>they solve different problems.</strong></p><h3>The Case for HTML: From Text Output to Interactive Artifact</h3><p>The strongest argument for HTML is not that it looks better.</p><p>It is that HTML changes what the output can become.</p><p>A Markdown document is usually linear. You scroll from top to bottom. You read a heading, then a paragraph, then a list, then a code block. That works well for short explanations, READMEs, ADRs, technical notes, and implementation summaries.</p><p>But once the output gets larger, that structure starts to show its limits.</p><p>Think about a multi step implementation plan, a pull request review, a system architecture analysis, a database migration strategy, a product decision matrix, or an incident report. These are not always best consumed as a long vertical document. Sometimes the information has relationships, layers, tradeoffs, flows, and dependencies that are difficult to express in plain text.</p><p>That is where HTML becomes interesting.</p><p>A code review can become an annotated diff with severity indicators, jump links, and grouped findings. A system explanation can become a clickable module map. An architecture decision can become a comparison grid with risks, constraints, dependencies, and diagrams. A research summary can include collapsible sections, tabs, glossary terms, and interactive examples.</p><p>This is not only formatting.<br>It is workflow design.</p><p>For visual, spatial, or interactive topics, HTML can communicate things that Markdown can only describe. A paragraph can explain a flow. A diagram can show it. A clickable diagram can let the reader explore it.</p><p>That difference matters because AI generated outputs are often written for humans who are busy, distracted, and trying to make decisions quickly.</p><p>A long Markdown file may be complete and still fail at its real job: helping someone understand what to do next.</p><p>HTML can help close that gap.</p><h3>The Community Reaction: Interested, but Skeptical</h3><p>The community reaction to this idea has been mixed, and that is probably a good thing.</p><p>Many people immediately understood the value of HTML for final outputs, visual reports, prototypes, and interactive artifacts. At the same time, there was strong resistance to the idea of making HTML the default format for agent communication.</p><p>That skepticism is not just conservatism. It comes from real workflow concerns.</p><p>One of the strongest counterarguments is that HTML does not necessarily solve the root problem. If an AI agent generates a massive implementation plan that nobody wants to read, maybe Markdown is not the issue. Maybe the agent simply wrote too much.</p><p>In other words, HTML can make a bloated output more attractive, but it does not automatically make it better.</p><p>A 2,000 line HTML file with tabs, cards, CSS, JavaScript, and SVG diagrams may be more pleasant to open in a browser than a 2,000 line Markdown file. But if the reasoning is weak, the structure is unclear, or the recommendations are vague, the format will not save it.</p><p>That is one of the most important points in this discussion:</p><p><strong>Better presentation is not a substitute for better thinking.</strong></p><p>There is also a practical developer concern. Markdown is easy to inspect. HTML is often easier to consume after rendering, but harder to review as source.</p><p>That difference matters.</p><p>A Markdown file can be reviewed directly in a pull request. A generated HTML file may require the reviewer to mentally separate content, layout, styling, scripts, and presentation choices. The rendered page may look polished, while the underlying source is noisy and difficult to maintain.</p><p>That is why many developers seem open to HTML as a delivery format, but far less comfortable with HTML as the default working format.</p><h3>The Markdown Argument: Source of Truth Still Matters</h3><p>Markdown’s biggest advantage is not beauty. It is operational simplicity.</p><p>It works almost everywhere. It is readable before rendering. It is easy to edit. It works well with Git. It is easy to review in pull requests. It can be searched with simple tools. It can be generated, transformed, linted, converted, and embedded into documentation sites.</p><p>That may sound boring, but boring is often what makes a format reliable.</p><p>Many AI agent outputs are not disposable. Architecture decisions, implementation plans, product specs, runbooks, postmortems, onboarding guides, and API documentation often need to live in a repository. They need to be reviewed by people. They need to survive beyond the first AI interaction. They may need to be updated months later by someone who never saw the original prompt.</p><p>For that kind of work, Markdown is still hard to beat.</p><p>Markdown keeps content and presentation reasonably separate. That separation is valuable in software engineering because it keeps the source clean, portable, and easy to reason about.</p><p>HTML, on the other hand, often mixes content, layout, styling, and behavior into the same artifact. That can be powerful, but it also makes the result harder to maintain.</p><p>A beautiful HTML artifact may be perfect for a workshop or stakeholder presentation. But if someone needs to update a single section later, they may have to navigate nested divs, CSS classes, layout structures, inline styles, and embedded scripts.</p><p>That is not a small detail.<br>It is a maintenance cost.<br>Markdown is boring in the best possible way.<br>It is durable.</p><h3>The Token Question: Beauty Has a Cost</h3><p>The token discussion is not just theoretical.</p><p>LLM APIs are priced by tokens, and output format directly affects token usage. Markdown is compact. HTML adds tags. Styled HTML adds CSS. Interactive HTML adds JavaScript. Diagram heavy HTML may include inline SVG. A beautiful, standalone artifact can easily become much larger than the equivalent Markdown document.</p><p>For one document, this may not matter.</p><p>For a team generating dozens or hundreds of artifacts per week, it starts to matter. It affects cost, latency, context usage, rate limits, and agent responsiveness.</p><p>To make this more concrete, imagine an AI agent producing an implementation plan and generating it with Claude Sonnet 4.6. At the time of writing, Anthropic lists Claude Sonnet 4.6 output pricing at $15 per million output tokens.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DUZqniY-pv0OSztUWuT1sw.png" /></figure><p>These numbers are illustrative, not universal. Tokenization depends on the model, the content, the markup style, and whether the HTML includes CSS, JavaScript, SVG, or embedded data. The cost also changes depending on the model used. A cheaper model may reduce the financial impact, while a more expensive model may amplify it.</p><p>Still, the principle is clear:</p><p><strong>HTML gives you more expressive power, but that power is paid for in tokens, latency, and complexity.</strong></p><p>That does not mean HTML should be avoided. It means HTML should be intentional.</p><p>If the output is a simple implementation note, Markdown is probably enough. If the output is an executive facing architecture walkthrough with diagrams, comparisons, and navigation, the extra token cost may be justified.</p><p>The question is not whether HTML costs more.</p><p>It usually does.</p><p>The real question is whether the extra cost produces enough extra value.</p><h3>Reviewability and Security</h3><p>There is another important dimension here: reviewability.</p><p>Markdown is transparent. What you see in the source is close to what you get in the rendered output. HTML is different. The rendered page may look simple, while the source may contain hidden elements, scripts, styles, remote assets, or behavior that is not obvious at first glance.</p><p>For personal experiments, that may be fine.</p><p>For enterprise environments, it matters.</p><p>Generated HTML should be treated as code, not just as a document. It may include JavaScript. It may include event handlers. It may include external references. It may include hidden text. It may include styling tricks that change what the reader sees versus what another system or agent might parse.</p><p>That does not make HTML dangerous by default. It simply makes it more powerful, and powerful formats require more discipline.</p><p>A reasonable set of rules could look like this:</p><ul><li><strong>Generated HTML reports should be static by default.</strong></li><li><strong>External scripts and remote assets should be avoided unless explicitly needed.</strong></li><li><strong>HTML artifacts should not become the source of truth unless the team is prepared to maintain them.</strong></li><li><strong>Important decisions should still be captured in a simpler canonical format.</strong></li><li><strong>Generated HTML should be reviewed like code when it enters a repository.</strong></li></ul><p>In other words, HTML can be a great output format, but it should not be treated as harmless plain text</p><h3>Choosing the Right Format: Markdown for Truth, HTML for Experience</h3><p>A better way to frame the decision is not to ask whether HTML is better than Markdown, but to ask what role the output is supposed to play.</p><p>If the artifact needs to become part of the team’s long term knowledge base, Markdown is usually the safer choice. It works well for technical documentation, ADRs, READMEs, runbooks, implementation notes, pull request descriptions, meeting notes, and architecture decisions. These are artifacts that people may need to review in Git, edit manually, search with simple tools, or revisit months later.</p><p>Markdown is not exciting, but that is exactly why it works. It is predictable, portable, and durable. It keeps the focus on the content rather than the presentation.</p><p>HTML becomes more valuable when the goal is communication, exploration, or decision making. If the output needs to help someone quickly understand a complex system, compare alternatives, navigate a flow, or interact with a prototype, HTML can offer a much better experience.</p><p>This is where HTML shines: executive architecture summaries, interactive system diagrams, rich code walkthroughs, visual pull request reviews, incident timelines, status reports, design system previews, clickable prototypes, comparison dashboards, workshops, and temporary tools that can export back to Markdown, JSON, or YAML.</p><p>In short, Markdown is the better format when the output needs to be maintained. HTML is the better format when the output needs to be experienced.</p><h3>A Better Mental Model: Source Format vs. Delivery Format</h3><p>The mistake is treating this as a binary decision.<br>It should not be “Markdown or HTML.”</p><p>It should be:</p><ul><li><strong>What is the source of truth?</strong></li><li><strong>What is the best delivery experience?</strong></li></ul><p>For source of truth, Markdown often wins. So do JSON, YAML, OpenAPI, AsyncAPI, ADR templates, database schemas, and structured domain models.</p><p>For delivery, HTML can be excellent.</p><p>This pattern is already familiar in software architecture. We separate data from presentation. We separate domain models from UI. We separate canonical schemas from consumer specific formats.</p><p>AI agent outputs should follow the same principle.</p><p>A practical workflow could look like this:</p><ol><li>Ask the agent to reason and store the canonical result in Markdown, JSON, or YAML.</li><li>Review and version that source artifact.</li><li>Generate HTML only when the goal is presentation, exploration, or stakeholder communication.</li><li>Treat HTML as a rendered view, not necessarily the source of truth.</li></ol><p>This gives us the best of both worlds.<br>Markdown remains the maintainable layer.<br>HTML becomes the experience layer.</p><h3>The Enterprise Perspective</h3><p>In enterprise environments, this distinction becomes even more important.</p><p>Executives, product leaders, architects, engineers, and operations teams do not consume information in the same way.</p><p>A developer reviewing an implementation plan may prefer Markdown because it is precise, diffable, and close to the codebase. An executive reviewing a modernization strategy may prefer an HTML artifact with diagrams, decision points, timelines, and tradeoff summaries. A platform team may want a JSON or YAML source that can generate both formats.</p><p>This is where AI agents can become much more useful.</p><p>Instead of asking an agent for one universal output, teams can ask for layered outputs:</p><ul><li><strong>A canonical Markdown decision record.</strong></li><li><strong>A structured JSON summary of risks and dependencies.</strong></li><li><strong>An HTML executive view.</strong></li><li><strong>A slide deck or PDF for distribution.</strong></li><li><strong>A checklist for implementation tracking.</strong></li></ul><p>The agent does not need to choose one format forever. It can generate different representations for different audiences.</p><p>That is a more mature way to think about AI assisted work.<br>The future is not one format.<br>The future is format aware generation.</p><h3>My Opinion: HTML Is Not the New Markdown</h3><p>The most reasonable position is not that HTML should replace Markdown.</p><p>It should not.</p><p>Markdown is still the better default for maintainable technical knowledge. It is more transparent, more editable, more diffable, and more efficient.</p><p>But HTML deserves a bigger role in AI agent workflows.</p><p>When an agent is helping us understand complexity, communicate tradeoffs, explore alternatives, or present ideas to a team, HTML can turn a passive document into an active interface.</p><p>That is valuable.</p><p>The key is discipline.</p><p>Do not ask for HTML just because it looks nicer. Ask for HTML when the shape of the information matters: flows, dependencies, comparisons, timelines, interactions, diagrams, prototypes, or executive storytelling.</p><p>Do not use HTML as your source of truth unless you are prepared to maintain it.</p><p>Do not ignore token cost just because the output looks impressive.</p><p>And do not blame Markdown for every unreadable AI output. Sometimes the real problem is not the format. Sometimes the agent simply wrote too much.</p><h3>Final Thought</h3><p>Markdown is still the best language for durable technical knowledge.</p><p>HTML is becoming one of the best formats for rich AI generated artifacts.</p><p>The future of agent output is probably not one replacing the other. It is a layered workflow:</p><ul><li><strong>Markdown, JSON, or YAML for truth.</strong></li><li><strong>HTML for understanding.</strong></li><li><strong>PDF, slides, or docs for distribution.</strong></li></ul><p>The best teams will not ask, “Should we use HTML or Markdown?”</p><p>They will ask:</p><p><strong>Who needs to consume this, how will it be reviewed, and does it need to live beyond today?</strong></p><h3>Sources and Further Reading</h3><p>This article was inspired by Thariq Shihipar’s recent exploration of HTML as a richer output format for Claude Code and AI agent workflows. His examples helped shape the central question behind this piece: when should agents produce simple, durable Markdown, and when should they generate something more visual, interactive, and closer to a small application?</p><p>The main reference for the debate is Thariq’s original collection, The unreasonable effectiveness of HTML, which shows several examples of self contained HTML artifacts generated for planning, reviewing code, explaining systems, creating diagrams, and building small interactive tools.</p><p><a href="https://thariqs.github.io/html-effectiveness/">https://thariqs.github.io/html-effectiveness/</a></p><p>Simon Willison also published a useful summary of the discussion, adding context around why this idea resonated with developers experimenting with Claude Code and agent generated workflows.</p><p><a href="https://simonwillison.net/2026/May/8/unreasonable-effectiveness-of-html/">https://simonwillison.net/2026/May/8/unreasonable-effectiveness-of-html/</a></p><p>To understand the community reaction, I also looked at discussions on Reddit and Hacker News. These threads were especially useful because they captured both sides of the debate: the excitement around richer artifacts, and the skepticism around token usage, maintainability, Git review, searchability, and security.</p><p><a href="https://www.reddit.com/r/ClaudeCode/comments/1t8vni3/html_markdown_for_claude_code_outputs_thariqs/">https://www.reddit.com/r/ClaudeCode/comments/1t8vni3/html_markdown_for_claude_code_outputs_thariqs/</a></p><p><a href="https://www.reddit.com/r/codex/comments/1t8vv0y/if_your_markdown_plans_are_too_long_to_read_is/">https://www.reddit.com/r/codex/comments/1t8vv0y/if_your_markdown_plans_are_too_long_to_read_is/</a></p><p><a href="https://news.ycombinator.com/item?id=48071940">https://news.ycombinator.com/item?id=48071940</a></p><p>For the token cost example, I used Anthropic’s public pricing page as a reference for Claude output token pricing.</p><p><a href="https://platform.claude.com/docs/en/about-claude/pricing">https://platform.claude.com/docs/en/about-claude/pricing</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=0d72813a7771" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“Mitigating CVE-2024–6387: Enhancing SSH Security with Azure Bastion”]]></title>
            <link>https://medium.com/@caiovlf/mitigating-cve-2024-6387-enhancing-ssh-security-with-azure-bastion-cb9c1cafdeb0?source=rss-9349fde658fa------2</link>
            <guid isPermaLink="false">https://medium.com/p/cb9c1cafdeb0</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[openssh]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[vulnerability-management]]></category>
            <category><![CDATA[cve-2024-6387]]></category>
            <dc:creator><![CDATA[Caio Labesten]]></dc:creator>
            <pubDate>Tue, 02 Jul 2024 12:16:27 GMT</pubDate>
            <atom:updated>2024-07-02T12:16:27.482Z</atom:updated>
            <content:encoded><![CDATA[<p>A signal handler race condition vulnerability, known as CVE-2024–6387, has been identified in OpenSSH impacting glibc-based Linux systems. This flaw, present in OpenSSH servers on Linux versions 8.5p1 up to 9.8p1, poses a risk of unauthenticated attackers gaining root access to affected machines, potentially assuming control. Versions 4.4p1 and older are also at risk without specific vulnerability patches.</p><p>To safeguard against this vulnerability, one effective measure is to avoid exposing the SSH protocol over the internet and utilize Azure Bastion Host. Azure Bastion, a fully managed PaaS service, enables secure connections to virtual machines via private IP addresses. It ensures secure and seamless RDP/SSH connectivity directly over TLS from the Azure portal or through the native SSH or RDP client on local computers. By connecting through Azure Bastion, virtual machines eliminate the need for a public IP address, agent, or specialized client software.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ob4Ut2fKPPi-4pBMQvvd-A.png" /><figcaption>Azure Bastion Architecture Model</figcaption></figure><p>Azure Bastion protects all VMs within the provisioned virtual network, securing RDP and SSH connectivity without exposing ports to the external environment. Leveraging Azure Bastion enhances security by providing secure RDP/SSH access while isolating virtual machines from external threats.</p><p>It’s crucial to stay informed and maintain up-to-date systems to mitigate potential risks posed by vulnerabilities.</p><p>#CyberSecurity #OpenSSH #VulnerabilityManagement #Azure #BastionHost</p><ul><li><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-6387">CVE - CVE-2024-6387</a></li><li><a href="https://learn.microsoft.com/en-us/azure/bastion/bastion-overview">About Azure Bastion</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cb9c1cafdeb0" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>