<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Features on human - The AI dev rig for AI coding agents</title>
    <link>https://gethuman.sh/features/</link>
    <description>Recent content in Features on human - The AI dev rig for AI coding agents</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://gethuman.sh/features/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Use Chrome Inside a Devcontainer with Claude Code</title>
      <link>https://gethuman.sh/features/chrome-bridge-devcontainer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/chrome-bridge-devcontainer/</guid>
      <description>&lt;h2 id=&#34;how-to-fix-claude-chrome-not-working-in-devcontainers&#34;&gt;How to fix &amp;ldquo;claude &amp;ndash;chrome&amp;rdquo; not working in devcontainers&lt;/h2&gt;&#xA;&lt;p&gt;When you run &lt;code&gt;claude --chrome&lt;/code&gt; inside a VS Code devcontainer, nothing happens. Chrome runs on the host machine, and its native messaging protocol can&amp;rsquo;t cross the Docker container boundary. The Chrome DevTools Protocol connection that Claude Code relies on simply doesn&amp;rsquo;t exist inside the container.&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;re forced to choose: use a devcontainer and lose browser access, or work on the host and lose isolation. Neither is acceptable for teams that need both. Chrome Bridge fixes this by tunneling the Chrome DevTools Protocol connection from inside the container to Chrome on the host.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Connect Claude Code to Jira, Linear, GitHub, Notion, Figma and More</title>
      <link>https://gethuman.sh/features/connectors/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/connectors/</guid>
      <description>&lt;p&gt;human is the intent layer of the &lt;a href=&#34;https://gethuman.sh/&#34;&gt;dark software factory&lt;/a&gt; — the thing that feeds your Claude Code agent real context from every tool your team uses. Without it, Claude can&amp;rsquo;t see your Jira tickets, read your Notion docs, or inspect your Figma designs, and you become the bottleneck copying context between tools and the AI.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem-with-connecting-ai-agents-to-your-tools&#34;&gt;The problem with connecting AI agents to your tools&lt;/h2&gt;&#xA;&lt;p&gt;Claude Code is powerful, but it can&amp;rsquo;t see your Jira tickets, read your Notion docs, inspect your Figma designs, or check your Amplitude dashboards. Without these connections, you&amp;rsquo;re the bottleneck — copying and pasting context between tools and the AI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MCP OAuth Authentication in Devcontainers for Claude Code</title>
      <link>https://gethuman.sh/features/mcp-oauth-devcontainer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/mcp-oauth-devcontainer/</guid>
      <description>&lt;h2 id=&#34;how-to-fix-mcp-oauth-not-working-in-devcontainers&#34;&gt;How to fix MCP OAuth not working in devcontainers&lt;/h2&gt;&#xA;&lt;p&gt;MCP servers that require OAuth authentication need a browser redirect. The server starts a local HTTP listener, opens a browser, the user authenticates, and the OAuth provider redirects back to &lt;code&gt;localhost&lt;/code&gt; with an authorization code.&lt;/p&gt;&#xA;&lt;p&gt;Inside a devcontainer, this breaks at every step. There&amp;rsquo;s no browser. &lt;code&gt;localhost&lt;/code&gt; inside the container is not the same &lt;code&gt;localhost&lt;/code&gt; the OAuth provider redirects to. Port forwarding helps sometimes, but it&amp;rsquo;s fragile and different for every MCP server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTPS Proxy and Firewall for Claude Code in Devcontainers</title>
      <link>https://gethuman.sh/features/firewall-proxy-devcontainer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/firewall-proxy-devcontainer/</guid>
      <description>&lt;h2 id=&#34;how-to-restrict-ai-coding-agent-network-access&#34;&gt;How to restrict AI coding agent network access&lt;/h2&gt;&#xA;&lt;p&gt;AI agents running inside devcontainers have the same network access as any process in that container. An agent that can reach the internet can exfiltrate code, call unauthorized APIs, download untrusted packages, or communicate with arbitrary endpoints.&lt;/p&gt;&#xA;&lt;p&gt;For teams that care about security — and every team running AI agents on proprietary code should — unrestricted outbound network access from a coding agent is an unacceptable risk.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open URLs on Host Browser from Claude Code Devcontainers</title>
      <link>https://gethuman.sh/features/open-urls-devcontainer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/open-urls-devcontainer/</guid>
      <description>&lt;h2 id=&#34;fix-xdg-open-not-working-in-devcontainers&#34;&gt;Fix xdg-open not working in devcontainers&lt;/h2&gt;&#xA;&lt;p&gt;When code inside a devcontainer tries to open a URL — whether it&amp;rsquo;s an OAuth redirect, a documentation link, a test coverage report, or a local dev server preview — nothing happens. There&amp;rsquo;s no browser inside the container. &lt;code&gt;xdg-open&lt;/code&gt;, &lt;code&gt;open&lt;/code&gt;, and &lt;code&gt;$BROWSER&lt;/code&gt; all fail silently or error out.&lt;/p&gt;&#xA;&lt;p&gt;This breaks:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;OAuth flows&lt;/strong&gt; that need to open a browser for authentication&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; when it tries to open links or documentation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dev server previews&lt;/strong&gt; that auto-open &lt;code&gt;localhost:3000&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Test reports&lt;/strong&gt; that open an HTML file in the browser&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Any tool&lt;/strong&gt; that assumes a browser is available&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;browser-replacement-for-containers&#34;&gt;$BROWSER replacement for containers&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;human-browser&lt;/code&gt; is a drop-in replacement for &lt;code&gt;xdg-open&lt;/code&gt; and the system browser inside devcontainers. Set it as &lt;code&gt;$BROWSER&lt;/code&gt; in your container, and any tool that opens URLs will have those URLs open on your host machine instead.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Protect .env Files from AI Agents in Devcontainers</title>
      <link>https://gethuman.sh/features/env-filter-devcontainer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/env-filter-devcontainer/</guid>
      <description>&lt;h2 id=&#34;how-to-prevent-ai-coding-agents-from-reading-env-secrets&#34;&gt;How to prevent AI coding agents from reading .env secrets&lt;/h2&gt;&#xA;&lt;p&gt;When AI agents run inside devcontainers, the project directory is bind-mounted into the container. This means &lt;code&gt;.env&lt;/code&gt; files — containing API keys, database credentials, and other secrets — are fully readable by the agent. A compromised or careless agent can read and exfiltrate these credentials.&lt;/p&gt;&#xA;&lt;h2 id=&#34;fuse-based-env-filtering-for-claude-code-devcontainers&#34;&gt;FUSE-based .env filtering for Claude Code devcontainers&lt;/h2&gt;&#xA;&lt;p&gt;The human daemon creates a FUSE mount that mirrors your entire workspace. The container mounts this filtered view instead of the real directory. Regular files pass through at native speed. &lt;code&gt;.env&lt;/code&gt; files appear in directory listings but return empty content when read. Writes to &lt;code&gt;.env&lt;/code&gt; files are blocked.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Built-in Development Skills for Claude Code</title>
      <link>https://gethuman.sh/features/skills/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/skills/</guid>
      <description>&lt;h2 id=&#34;how-to-create-a-definition-of-ready-for-claude-code&#34;&gt;How to create a Definition of Ready for Claude Code&lt;/h2&gt;&#xA;&lt;p&gt;Claude Code is great at writing code. But code is the easy part. The hard part is everything around it: Is the ticket ready? What&amp;rsquo;s the implementation approach? Does the code match the acceptance criteria? Are there edge cases? Security issues?&lt;/p&gt;&#xA;&lt;p&gt;human&amp;rsquo;s built-in Claude Code skills cover the full development lifecycle as slash commands. Each skill fetches the ticket from your configured issue tracker, performs its analysis, and writes a structured report to the &lt;code&gt;.human/&lt;/code&gt; directory. &lt;code&gt;/human-ready&lt;/code&gt; in particular enforces a Definition of Ready checklist before any code is written — stopping the &amp;ldquo;build the wrong thing&amp;rdquo; failure mode at the source.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Live Dashboard for Claude Code Token Usage and Tracker Issues</title>
      <link>https://gethuman.sh/features/usage/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/usage/</guid>
      <description>&lt;h2 id=&#34;how-to-monitor-claude-code-token-consumption&#34;&gt;How to monitor Claude Code token consumption&lt;/h2&gt;&#xA;&lt;p&gt;Claude Code shows no easy way to see how many tokens you&amp;rsquo;ve consumed in the current billing window. You&amp;rsquo;re flying blind until you hit the rate limit. With multiple instances running — one on your host, others inside devcontainers — it&amp;rsquo;s even worse. Each instance burns through tokens independently, and you have no aggregate view.&lt;/p&gt;&#xA;&lt;h2 id=&#34;one-command-full-visibility&#34;&gt;One command, full visibility&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;human tui&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://gethuman.sh/human-tui.png&#34; alt=&#34;human tui dashboard&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Telegram Bot Messages for Claude Code</title>
      <link>https://gethuman.sh/features/telegram/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://gethuman.sh/features/telegram/</guid>
      <description>&lt;h2 id=&#34;use-telegram-as-a-task-inbox-for-claude-code&#34;&gt;Use Telegram as a task inbox for Claude Code&lt;/h2&gt;&#xA;&lt;p&gt;You set up a Telegram bot for your team or users. Messages come in — feature requests, bug reports, questions. Someone has to read them, triage them, and act on them.&lt;/p&gt;&#xA;&lt;p&gt;With human, Claude Code can do that. It polls the bot for pending messages, reads them, acts on them, and acknowledges them when done.&lt;/p&gt;&#xA;&lt;h2 id=&#34;three-commands&#34;&gt;Three commands&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# See what&amp;#39;s waiting&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;human telegram list --table&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Read a specific message&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;human telegram get &lt;span style=&#34;color:#ae81ff&#34;&gt;123456&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Mark as handled&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;human telegram ack &lt;span style=&#34;color:#ae81ff&#34;&gt;123456&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s the full API. List, read, acknowledge.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
