{
  "title": "Container environment diff",
  "human_url": "https://happytails.ai/en/developer-tools/container-environment-diff/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/container-environment-diff/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/container-environment-diff.md",
  "content": "Container environment diff\nCompare two supplied environment exports locally. See added, removed, changed and unknown variables without displaying their values.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Container environment diff\nPaste the before and after exports.\nSet the exact redaction marker used by your exports, or leave it blank.\nReview change statuses and download the value-free comparison report.\nUseful next steps\nEnvironment file validator\nEnvironment template generator\nCompare exported text from two environments\nPaste the before export into the main input and the after export into the second field. Both use the same portable dotenv dialect. The tool reads only the text you provide; it does not connect to a container, inspect a running process or execute a shell.\nTreat redaction as missing evidence\nValues equal to the configured redaction marker, such as [REDACTED], produce Unknown when both names exist. Identical markers do not prove that the underlying secrets match. Leave the marker field empty to compare all supplied strings literally.\nKeep the comparison report value-free\nThe report contains variable names, change status and source line numbers. It omits values and hashes of values. Empty assignments are distinct from missing names. Duplicate or malformed assignments in either export block the comparison.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Environment file validator",
      "url": "https://happytails.ai/en/developer-tools/environment-file-validator/"
    },
    {
      "name": "Environment template generator",
      "url": "https://happytails.ai/en/developer-tools/environment-template-generator/"
    }
  ],
  "tool": {
    "id": "container-environment-diff",
    "category": "developer-tools",
    "built": true,
    "requirements": "Portable dotenv dialect: ASCII names, optional export, = assignments, # comments and literal single/double-quoted multiline values. No escape conversion, variable interpolation, shell execution or Docker Compose semantics. Up to 10,000 assignments. Use # empty for no assignments. Runs on your device with no configuration, repository or credential lookups. Up to 1,000,000 input characters and 4,000,000 characters per output file.",
    "implementation": {
      "fields": [
        {
          "key": "comparison",
          "label": "After environment export",
          "value": "",
          "type": "textarea",
          "help": "Paste the second export using the same portable dotenv dialect. Use # empty for no assignments."
        },
        {
          "key": "redacted",
          "label": "Redacted-value marker",
          "value": "[REDACTED]",
          "type": "text",
          "help": "An exact match to this marker makes value comparison unknown. Leave blank to disable marker detection."
        }
      ],
      "live": true,
      "presentation": "metrics",
      "note": "Dialect: portable dotenv, not Docker Compose interpolation or a shell script. Names use ASCII letters, digits and underscores; the first character cannot be a digit. Optional export prefixes, # comments and literal single/double-quoted multiline values are supported. Backslash escapes and $ references are not expanded. Reports omit values and source lines. Use # empty for an environment with no assignments. Up to 10,000 assignments; up to 500 displayed issues with an omitted count. Compare supplied before/after exports only. Results show added, removed, changed, unchanged and unknown values without revealing values or hashes. A redacted value never proves equality. Runs on your device. No remote configuration, repository or credentials are queried. Up to 1,000,000 input characters; output files are limited to 4,000,000 characters each.",
      "experience": {
        "automatic": true,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Before environment export",
        "placeholder": "PORT=8080\nTOKEN=[REDACTED]\nOLD=yes\n",
        "help": "Paste text to process locally. Review the supported syntax and the result before downloading. Results update as you type. Up to 1,000,000 characters.",
        "action": null
      },
      "mode": "automatic",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Container environment diff\n\n- Human page: https://happytails.ai/en/developer-tools/container-environment-diff/\n- Markdown: https://happytails.ai/en/developer-tools/container-environment-diff.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/container-environment-diff/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `container-environment-diff` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Automatic updates after valid input or file selection. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nDialect: portable dotenv, not Docker Compose interpolation or a shell script. Names use ASCII letters, digits and underscores; the first character cannot be a digit. Optional export prefixes, # comments and literal single/double-quoted multiline values are supported. Backslash escapes and $ references are not expanded. Reports omit values and source lines. Use # empty for an environment with no assignments. Up to 10,000 assignments; up to 500 displayed issues with an omitted count. Compare supplied before/after exports only. Results show added, removed, changed, unchanged and unknown values without revealing values or hashes. A redacted value never proves equality. Runs on your device. No remote configuration, repository or credentials are queried. Up to 1,000,000 input characters; output files are limited to 4,000,000 characters each.\n\n### Inputs and settings\n\nText input: Before environment export.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\nPORT=8080\nTOKEN=[REDACTED]\nOLD=yes\n```\n\nPaste text to process locally. Review the supported syntax and the result before downloading. Results update as you type. Up to 1,000,000 characters.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `comparison` | After environment export | textarea | \"\" |  |\n| `redacted` | Redacted-value marker | text | \"[REDACTED]\" |  |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nPortable dotenv dialect: ASCII names, optional export, = assignments, # comments and literal single/double-quoted multiline values. No escape conversion, variable interpolation, shell execution or Docker Compose semantics. Up to 10,000 assignments. Use # empty for no assignments. Runs on your device with no configuration, repository or credential lookups. Up to 1,000,000 input characters and 4,000,000 characters per output file.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"container-environment-diff\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Portable dotenv dialect: ASCII names, optional export, = assignments, # comments and literal single/double-quoted multiline values. No escape conversion, variable interpolation, shell execution or Docker Compose semantics. Up to 10,000 assignments. Use # empty for no assignments. Runs on your device with no configuration, repository or credential lookups. Up to 1,000,000 input characters and 4,000,000 characters per output file.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"comparison\",\n        \"label\": \"After environment export\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"help\": \"Paste the second export using the same portable dotenv dialect. Use # empty for no assignments.\"\n      },\n      {\n        \"key\": \"redacted\",\n        \"label\": \"Redacted-value marker\",\n        \"value\": \"[REDACTED]\",\n        \"type\": \"text\",\n        \"help\": \"An exact match to this marker makes value comparison unknown. Leave blank to disable marker detection.\"\n      }\n    ],\n    \"live\": true,\n    \"presentation\": \"metrics\",\n    \"note\": \"Dialect: portable dotenv, not Docker Compose interpolation or a shell script. Names use ASCII letters, digits and underscores; the first character cannot be a digit. Optional export prefixes, # comments and literal single/double-quoted multiline values are supported. Backslash escapes and $ references are not expanded. Reports omit values and source lines. Use # empty for an environment with no assignments. Up to 10,000 assignments; up to 500 displayed issues with an omitted count. Compare supplied before/after exports only. Results show added, removed, changed, unchanged and unknown values without revealing values or hashes. A redacted value never proves equality. Runs on your device. No remote configuration, repository or credentials are queried. Up to 1,000,000 input characters; output files are limited to 4,000,000 characters each.\",\n    \"experience\": {\n      \"automatic\": true,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Before environment export\",\n      \"placeholder\": \"PORT=8080\\nTOKEN=[REDACTED]\\nOLD=yes\\n\",\n      \"help\": \"Paste text to process locally. Review the supported syntax and the result before downloading. Results update as you type. Up to 1,000,000 characters.\",\n      \"action\": null\n    },\n    \"mode\": \"automatic\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCompare two supplied environment exports locally. See added, removed, changed and unknown variables without displaying their values.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Container environment diff\n\n1. Paste the before and after exports.\n2. Set the exact redaction marker used by your exports, or leave it blank.\n3. Review change statuses and download the value-free comparison report.\n\n## Useful next steps\n\n- [Environment file validator](https://happytails.ai/en/developer-tools/environment-file-validator/) ([Markdown](https://happytails.ai/en/developer-tools/environment-file-validator.md))\n\n- [Environment template generator](https://happytails.ai/en/developer-tools/environment-template-generator/) ([Markdown](https://happytails.ai/en/developer-tools/environment-template-generator.md))\n\n## Compare exported text from two environments\n\nPaste the before export into the main input and the after export into the second field. Both use the same portable dotenv dialect. The tool reads only the text you provide; it does not connect to a container, inspect a running process or execute a shell.\n\n### Treat redaction as missing evidence\n\nValues equal to the configured redaction marker, such as \\[REDACTED\\], produce Unknown when both names exist. Identical markers do not prove that the underlying secrets match. Leave the marker field empty to compare all supplied strings literally.\n\n### Keep the comparison report value-free\n\nThe report contains variable names, change status and source line numbers. It omits values and hashes of values. Empty assignments are distinct from missing names. Duplicate or malformed assignments in either export block the comparison.\n"
}