31 min read

Send Production Error Webhooks to a Local AI Agent

Securely route monitoring webhooks to a local AI triage agent with a Localtonet HTTP tunnel, signature checks, and safe payload handling.

Production monitoring webhook routed through an HTTP tunnel to a secured receiver and AI agent on a local workstation.
A public webhook reaches a private local triage service through an authenticated tunnel path.
AI Agents Β· Production Webhooks Β· Localtonet Β· 2026

Turn incoming production alerts into a controlled local triage workflow

A monitoring platform can detect and group production failures, but a locally running AI agent still needs a safe way to receive that context. In this guide, we build a webhook receiver in front of the agent, verify every event, minimize the data passed into prompts, and publish the receiver through a Localtonet HTTP tunnel. The result is a public HTTPS destination without inbound router port forwarding, firewall changes, VPN setup, or a public IP address. Localtonet provides the connectivity path, while your monitoring system remains responsible for detecting failures and deciding when to send an event.

πŸ”’ Signature verification and payload validation 🌐 Public HTTPS access to a local receiver ⚑ Structured handoff to a local AI triage agent

Understand the production webhook architecture

Architecture showing a monitoring service sending an HTTPS webhook through Localtonet to a receiver and AI agent on a local machine.
The monitoring service calls a public endpoint while the receiver and AI agent remain on the local machine.

The safest design separates monitoring, transport, validation, and AI execution into distinct responsibilities. Your production monitoring service observes the application, identifies an error or incident, and sends an outbound webhook. The webhook reaches a public HTTPS address assigned to a Localtonet HTTP tunnel. Our client maintains an outbound connection from your device to a Localtonet relay and forwards the request to the local receiver that you selected as the tunnel target.

The local receiver is the security boundary. It authenticates the webhook, rejects stale or malformed requests, normalizes the accepted fields, records an event identifier, and places approved work into a queue. Only then should a constrained worker pass the sanitized incident context to the local AI triage agent.

Localtonet does not detect production errors, collect application logs, group related failures, generate fixes, or determine whether code is safe to deploy. Those tasks belong to the monitoring platform, your receiver, the agent, and your human review process. Our role in this workflow is to make the locally reachable HTTP service available through a public address without requiring an inbound router rule or public IP address.

πŸ“‘ Monitoring and detection Your existing monitoring platform decides which failures qualify for notification and constructs the webhook payload. Its event schema, retry policy, signing method, and alert-grouping behavior remain provider-specific.
🌐 Public connectivity A Localtonet HTTP tunnel supplies a public HTTPS address and forwards requests to the configured local IP address and port while the selected client is connected and the tunnel is running.
πŸ›‘οΈ Webhook receiver The receiver verifies authenticity, validates the payload, prevents duplicate processing, applies size limits, and removes data that the agent does not need.
πŸ€– AI triage worker A separate worker can summarize the failure, inspect an approved repository, run permitted checks, and prepare a recommendation without giving the public request direct control over tools.
πŸ‘€ Human decision point A reviewer evaluates proposed changes and evidence before deployment. Receiving an authentic production event does not make an AI-generated diagnosis or patch automatically trustworthy.

Recommended request flow

  1. The monitoring platform detects or groups a production failure.
  2. It sends an HTTPS webhook to the public URL assigned to the Localtonet tunnel.
  3. Localtonet forwards the HTTP request to the configured local receiver.
  4. The receiver captures the unmodified request body and verifies the provider's signature according to that provider's documentation.
  5. The receiver checks freshness, content type, body size, schema, event type, and an allowlist of expected source identifiers.
  6. The receiver uses a stable event or delivery identifier to detect duplicates.
  7. Accepted data is reduced to a normalized internal incident record and placed into a bounded queue.
  8. The receiver returns a timely response without waiting for a long AI investigation.
  9. A separate worker retrieves the normalized record and invokes the local agent with a fixed instruction boundary.
  10. The agent produces analysis, test results, or a proposed change for human review.
Connectivity is not webhook authentication

A public HTTPS URL protects data in transit to the tunnel edge, but it does not establish that a request came from your monitoring provider. Signature verification, replay protection, payload validation, and authorization must be implemented by the receiver.

Prerequisites and design decisions

Before publishing anything, prepare the local service and decide how narrowly it should operate. The receiver should already work on the local machine before a tunnel is created. This keeps application debugging separate from public connectivity debugging.

You need the following components:

  • A production monitoring service that can send generic HTTPS webhooks.
  • The provider's current documentation for its payload schema, signature algorithm, signature headers, timestamp behavior, retry policy, and delivery identifiers.
  • A local HTTP receiver that can preserve the raw request bytes before JSON parsing.
  • A dedicated webhook secret generated or configured through the monitoring platform, if that platform supports signed webhooks.
  • A local queue or durable work store if events must survive receiver or agent restarts.
  • A local AI triage worker with a clearly restricted tool set and repository scope.
  • A Localtonet account, client application, and device-specific authentication token.
  • A selected local IP address and port on which the receiver listens.

This guide does not prescribe a programming language, framework, port number, header name, or monitoring-provider-specific signature formula. Those details cannot safely be generalized. Use a framework that gives you access to the exact raw HTTP body, supports request-size limits, and allows constant-time comparison of signatures. Obtain exact signature field names and canonicalization requirements from your monitoring provider.

Choose where each component runs

The simplest arrangement places the Localtonet client, webhook receiver, queue worker, and local agent on the same device. In that case, the receiver can listen only on a local interface if your runtime and Localtonet configuration can reach that address. If the receiver is on another machine in the local network, run the Localtonet client on a device that can reach the receiver and configure the target with the receiver's reachable local address.

Avoid exposing the agent's own control interface when a narrow webhook receiver will do. A receiver with one authenticated ingestion route is easier to validate than a general-purpose agent API containing shell, repository, or tool-execution operations.

Component Primary responsibility Should accept public instructions?
Monitoring platform Detect, group, and select production failures for delivery No. It originates the event.
Localtonet HTTP tunnel Forward public HTTP requests to the configured local target No. It supplies connectivity rather than incident logic.
Webhook receiver Authenticate, validate, normalize, deduplicate, and enqueue Only through a narrowly defined webhook route.
Triage worker Consume approved records and invoke the agent under policy No direct public endpoint is required.
AI agent Analyze approved context and produce reviewable output No. It should receive internal normalized jobs.
Human reviewer Assess diagnosis, test evidence, proposed changes, and deployment risk Not applicable.

Build a narrow local webhook receiver

The receiver should be deliberately boring. Its job is not to investigate an incident inside the request-response cycle. It should make a small number of deterministic decisions, persist accepted work, and return promptly. Long-running model calls, repository scans, test suites, and patch generation belong in a background worker.

Define a dedicated route and method

Create one route for this integration and accept only the HTTP method documented by your monitoring provider. Return a method error for unexpected methods. A dedicated route makes request-size policies, authentication, logging, and rate controls easier to apply without affecting unrelated local services.

A long or unguessable path may reduce accidental traffic, but it is not authentication. Paths can appear in configuration files, logs, browser history, screenshots, and support records. Treat the path as routing information, not a secret.

Preserve the raw request body

Many webhook systems compute a message authentication code over the exact bytes sent in the HTTP body. Parsing JSON and then serializing it again can change whitespace, property order, escaping, or number representation. That can cause a valid signature to fail or, in a poorly designed verifier, lead to verification of data different from what the application consumes.

Read the body once into a size-limited byte buffer. Verify the provider's signature against those original bytes. Parse the body only after verification succeeds. If your framework automatically parses request bodies, confirm how to access the raw bytes or disable automatic parsing for this route.

Normalize into an internal event

Do not pass the complete provider payload directly to the agent. Convert accepted events into a small internal structure containing only the fields required for triage. A typical internal record may contain an event identifier, event type, occurrence time, project or service identifier, deployment version, error classification, sanitized message, selected stack frames, an occurrence count, and approved links or correlation identifiers.

The exact field names depend on the monitoring provider, so map them explicitly rather than searching arbitrary nested objects. Reject unsupported event types. Treat missing required fields as validation failures instead of replacing them with guessed values.

{
  "eventId": "provider-delivery-identifier",
  "eventType": "approved-error-event",
  "occurredAt": "validated-provider-timestamp",
  "service": "allowlisted-service-identifier",
  "version": "validated-deployment-version",
  "error": {
    "classification": "normalized-error-class",
    "message": "sanitized-summary",
    "stackFrames": [
      "selected non-secret frame"
    ]
  },
  "occurrenceCount": 1
}

This example is an internal design, not a claim about any particular provider's webhook schema. Build the mapping from the provider's documented payload and reject fields that do not match your expected types, lengths, and formats.

Decouple acknowledgment from AI processing

Webhook senders commonly impose response deadlines and may retry unsuccessful or timed-out deliveries, although exact behavior varies by provider. A model invocation or test suite can take much longer than an HTTP delivery window. Store the validated job first, then acknowledge according to the provider's documented success-response requirements.

If durable acceptance matters, do not return success before the event is safely recorded. If enqueueing fails, return the provider-appropriate failure response so its documented retry behavior can apply. Never invent a response code policy without checking the provider's webhook documentation.

Authenticate events and contain untrusted data

Webhook security flow with request limits, signature verification, field allowlisting, and bounded AI input.
Only authenticated, size-limited, and normalized event data should reach the local AI agent.

A production webhook can carry valuable diagnostic context, but every incoming byte remains untrusted. There are two separate trust questions: whether the request came from the expected sender, and whether the event content is safe to use. A valid signature helps answer the first question. It does not answer the second.

Verify signatures exactly as documented

Follow the monitoring provider's current signing specification. Typical specifications define which bytes are signed, which algorithm is used, where the signature is placed, whether a timestamp participates in the signed message, how multiple signatures are represented, and how secrets are rotated. Small deviations can invalidate legitimate requests or weaken verification.

A robust verification sequence is:

  1. Reject a missing or malformed signature header before starting expensive work.
  2. Extract the provider-defined timestamp if one is part of the protocol.
  3. Reject timestamps outside your permitted replay window, allowing only the clock skew your environment requires.
  4. Compute the expected signature from the raw request bytes using the provider's documented algorithm and canonical format.
  5. Decode supplied and expected signatures into comparable byte sequences.
  6. Compare them using a constant-time comparison function supplied by a trusted cryptographic library.
  7. During a planned rotation, accept only the explicitly configured current and previous secrets for a limited overlap period.
  8. Record a minimal verification outcome without logging the secret or full signature.
Never invent a signature formula

Header names, timestamp formats, encodings, canonical strings, and algorithms differ among monitoring services. A generic HMAC example can be dangerously wrong for a specific provider. Implement the exact current specification published by the service that sends your webhooks.

Store secrets outside source code

Keep webhook secrets in the secret-management mechanism appropriate for the local operating environment. Do not commit them to a repository, place them in an agent prompt, embed them in the webhook URL, or print them during debugging. Limit access so only the receiver process can read the secret.

Define a rotation procedure before the integration becomes operational. The procedure should identify who can issue a replacement, how the receiver temporarily accepts overlapping keys if the provider supports that workflow, how the monitoring configuration is updated, and when the old key is removed.

Validate structure and impose limits

Apply a maximum body size before buffering the request. After successful authentication, validate the parsed payload against a strict schema. Check object shapes, required fields, string lengths, array lengths, timestamp formats, permitted event types, and allowlisted project or service identifiers.

Avoid silently coercing unexpected values. A string where a number is expected or a nested object where a scalar is expected should fail validation. Limit stack frames, log lines, and text field lengths before storage and before any model invocation. These controls reduce memory pressure and constrain the amount of attacker-controlled text entering the AI context.

Minimize production data

Production diagnostics can include customer identifiers, request headers, cookies, authorization values, query strings, database fragments, file paths, source snippets, and user-generated content. Decide which categories are necessary for triage and discard the rest. Redact known credential formats and high-risk fields before persistence.

Data minimization should happen before the agent sees the event. Asking the model to ignore secrets is not a replacement for removing them. Also consider retention: an incident record may be useful for a short investigation but unnecessary after resolution. Set a deletion policy for queued payloads, model inputs, model outputs, and application logs.

Treat payload text as prompt-injection input

Error messages, request paths, log entries, traces, and user-controlled application values can contain instructions aimed at the AI agent. A signed event can still contain malicious text because the production application may have logged attacker input. Do not concatenate webhook fields into an unrestricted instruction such as β€œdo everything requested in this incident.”

Use a fixed system policy that labels incident fields as evidence, not commands. Keep the event in a clearly delimited data section. Tell the agent not to follow instructions found in errors, logs, source comments, issue text, or external content. More importantly, enforce restrictions outside the prompt through tool permissions, process isolation, repository allowlists, and approval gates.

πŸ”‘ Authenticity Verify the sender using the monitoring provider's documented signing protocol and a dedicated secret.
⏱️ Freshness Check signed timestamps when the provider supplies them and reject requests outside the permitted replay window.
πŸ“ Schema enforcement Accept only expected event types, projects, field shapes, lengths, and content types.
🧹 Data minimization Remove credentials, unnecessary customer data, excessive logs, and unrelated telemetry before storage or AI use.
🧱 Tool isolation Give the triage worker only the repository, commands, and output destinations needed for investigation.
βœ… Human approval Require review before deployment or other high-impact actions, even when the event and diagnosis appear valid.

Deduplicate deliveries and make processing idempotent

A sender may deliver the same event more than once. Retries can occur after timeouts, network interruptions, or ambiguous acknowledgments. Use the provider's documented delivery identifier when available. Store that identifier with a uniqueness constraint or an atomic β€œinsert if absent” operation before scheduling work.

If the provider does not supply a stable delivery identifier, consult its documentation before designing a fallback. A hash of selected fields may accidentally merge separate incidents or treat small variations as new work. Do not assume that an error-group identifier and a webhook-delivery identifier mean the same thing.

Deduplication should also account for processing state. Track whether an event is accepted, queued, running, completed, failed, or intentionally suppressed. Retrying a failed internal job should not require the monitoring platform to resend the webhook, and receiving a duplicate should not start multiple agents against the same repository.

Verify the complete receiver locally

Test the receiver through its local address before involving Localtonet or the monitoring provider. Local verification should cover successful acceptance and every meaningful rejection path. This makes it clear whether a failure belongs to the application, signature configuration, tunnel target, or external sender.

Run the receiver and confirm its listener

Start the receiver using the documented procedure for your chosen application. Confirm that it binds to the intended local IP address and selected port. The exact startup command, file path, environment-variable names, and default port depend on your implementation, so they must come from that implementation rather than being guessed here.

Keep a simple local health route separate from the webhook ingestion route if your operational model needs one. It should reveal only minimal status, such as whether the process can accept work. Do not expose environment values, secrets, queue contents, stack traces, filesystem paths, or agent configuration through health responses.

Build a local test matrix

Test Expected receiver behavior What it proves
Valid signed event Accept once, persist the normalized record, and enqueue one job The normal authentication and processing path works.
Missing signature Reject before parsing or queueing Unsigned traffic cannot reach the agent workflow.
Incorrect signature Reject without revealing the expected value The receiver does not rely on possession of the URL.
Stale signed timestamp Reject when the provider's protocol supports freshness checks Captured requests cannot be replayed indefinitely.
Malformed JSON Reject safely with no internal exception details Parser failures do not become information leaks.
Unsupported event type Reject or intentionally ignore according to documented policy Only approved workflows can start triage.
Oversized body Reject before unbounded buffering The endpoint enforces resource limits.
Duplicate delivery identifier Do not enqueue a second job Processing is idempotent under retries.
Payload containing prompt-like instructions Treat the text as evidence and preserve tool restrictions Payload content cannot redefine agent policy.
Queue unavailable Fail according to the sender's documented retry expectations The receiver does not acknowledge work that was lost.

Generate valid test signatures with a provider-supplied test facility or with a local fixture that implements the exact documented signing algorithm. Do not copy a signature from an earlier request while changing its body, because a correct verifier should reject that combination.

Use synthetic incidents during setup

Test with fabricated identifiers, messages, and stack traces. Do not paste real credentials or sensitive customer data into local fixtures, screenshots, issue trackers, or AI prompts while debugging the integration.

Expose the receiver with a Localtonet HTTP tunnel

Localtonet console showing a connected HTTP tunnel from a public webhook URL to a localhost receiver.
The connected tunnel maps its assigned public URL to the receiver running on localhost.

Once the receiver passes local testing, connect it to the internet through a Localtonet HTTP tunnel. The client on your device establishes an outbound connection to a Localtonet relay. This avoids requiring inbound router port forwarding, firewall changes, VPN setup, or a public IP address.

HTTP tunnels can use a generated subdomain, a selected subdomain where supported, or a custom domain. Available choices can vary, so use the options currently presented in the dashboard. If you choose a custom domain, check the current DNS requirements before changing records rather than relying on assumed values.

1

Install and run the Localtonet client

Install the current Localtonet application for the operating system on the device that can reach the local receiver. Start the client and keep it running. Exact installation commands vary by operating system and client version, so use the current instructions available through our platform rather than copying an unverified command.

2

Authenticate the intended device

Use the device-specific authentication token associated with the client that will run the tunnel. Treat this token as a secret. Do not place it in source code, screenshots, webhook payloads, agent prompts, or shared logs.

3

Select an available relay server

Choose a currently available Localtonet relay server or region from the dashboard. Do not hardcode a server code from an unrelated setup because available values can change and may vary by account or deployment.

4

Create the HTTP tunnel configuration

Create an HTTP tunnel and point its local target to the exact IP address and port where the verified webhook receiver is listening. Select the process type that fits your URL requirement, such as a generated subdomain or another currently available supported option.

5

Start the tunnel

Creating a tunnel does not make it active. Press Start and confirm that the selected client is connected and the tunnel is running. Copy the assigned public HTTPS address, then append only the receiver route required by your application.

6

Test the public route before enabling production delivery

Repeat the safe test cases through the public HTTPS address. Confirm that a valid signed fixture reaches the receiver and that unsigned, malformed, stale, oversized, and duplicate requests are handled exactly as they were during local testing.

For the current dashboard workflow and available HTTP tunnel options, consult our Localtonet HTTP tunnel documentation. The documentation should be treated as authoritative for current interface labels, available process types, and version-specific installation details.

Remember the tunnel lifecycle

The public endpoint is available only while the selected Localtonet client is connected and the tunnel is running. A saved tunnel configuration alone is not an active ingress path. Stopping the client or tunnel makes the endpoint unavailable until connectivity is restored.

Test the boundary, not only the happy path

Send an unsigned request to the public route and verify that it is rejected by the receiver. This confirms that possession of the URL is not enough. Then send a properly signed synthetic event and verify that exactly one normalized job appears. Repeat the same delivery identifier and confirm that no second job starts.

Also stop the tunnel deliberately and observe how the monitoring provider records a failed delivery. Restart it and test recovery according to the provider's retry mechanism. This planned failure test reveals whether an outage produces recoverable retries, dropped notifications, or an operational alert that needs separate handling.

Connect the production monitoring webhook

After public testing succeeds, configure the monitoring platform to send the selected event category to the Localtonet HTTPS URL and receiver route. Use the platform's generic webhook destination when available. Do not expose the AI agent's administrative or tool interface as the destination.

Configure only the events you intend to process

Begin with a narrow event filter, such as one service, one environment, or one high-value error category. Production systems may generate bursts of repeated failures. If your monitoring platform supports grouping, thresholds, quiet periods, or environment filters, use those features to reduce noise before events reach the receiver.

Filtering at the sender does not replace validation at the receiver. Keep the local allowlist because monitoring configuration can drift or be changed by another administrator.

Configure the webhook secret

Generate a dedicated secret for this destination when supported. Do not reuse an application password, Localtonet device token, repository credential, or agent API credential. Configure the same webhook secret in the receiver through its protected secret mechanism.

Send a provider-generated test event if the monitoring platform offers one. A provider test can validate headers and signature behavior more accurately than a handwritten request. Verify that the event passes authentication, maps to the expected internal structure, and reaches the queue once.

Choose acknowledgment behavior carefully

Follow the provider's documented definition of a successful webhook response. Some services require a response within a particular period or retry only selected response classes. Because these rules are provider-specific, do not assume that all non-success responses, redirects, or timeouts are handled identically.

The receiver should normally acknowledge after durable acceptance, not after full AI processing. Record the subsequent worker outcome separately. Otherwise, a ten-minute investigation can cause the sender to retry an event that was already accepted.

Keep agent permissions narrower than the event scope

An incident concerning one repository should not grant the worker access to every local repository. Map allowlisted service identifiers to fixed local workspaces. Do not let the payload supply an arbitrary filesystem path, repository URL, shell command, branch name, or deployment target.

Prefer read-only investigation first. If the agent can edit files, run it in a disposable worktree or equivalent isolated workspace. Permit only predetermined test and analysis operations. Network access, package installation, secret access, pull-request creation, and deployment should each be separate capabilities rather than consequences of receiving a webhook.

Operate the integration safely

A production ingestion path needs routine operational controls. The receiver, queue, agent, and tunnel can fail independently, so monitor them as separate components. A connected tunnel does not prove that the receiver can validate events, and a healthy receiver does not prove that the worker can complete triage.

Track useful operational states

Record minimal structured metadata for each stage: request received, authentication passed or failed, schema accepted or rejected, duplicate detected, enqueue succeeded or failed, worker started, worker completed, and human review status. Use an internal correlation identifier that does not expose secrets.

Avoid logging complete webhook bodies by default. If temporary diagnostic logging is necessary, redact sensitive fields, restrict access, set a short retention period, and turn it off after the issue is understood. Never log webhook secrets, Localtonet device tokens, authorization headers, session cookies, or full signature values.

Control concurrency and incident storms

A burst of production errors can create more jobs than a local agent can safely process. Place a bounded queue between ingestion and analysis. Set a small, deliberate worker concurrency. Group or suppress repeated work using provider issue identifiers where their semantics are documented.

Define overload behavior. You may choose to retain a bounded number of events, aggregate repeated occurrences, pause new investigations, or route overflow to human review. The important point is that untrusted traffic must not create unbounded memory use, disk growth, model usage, or parallel tool execution.

Plan tunnel and receiver restarts

The public URL works only while the Localtonet client is connected and the tunnel is running. If continuous reception is required, run the client and receiver under appropriate process supervision for your operating environment and test recovery after a restart. This article does not prescribe service-manager commands because they differ by operating system and installation method.

Confirm whether your selected public address remains appropriate for the monitoring configuration after stop, start, deletion, or recreation. Stopping and starting are lifecycle operations on an existing tunnel. Deleting and recreating a tunnel may require the monitoring destination to be checked again.

Rotate and revoke deliberately

Rotate the webhook secret periodically and immediately after suspected disclosure. If the Localtonet device token is exposed, replace it through the supported account workflow rather than continuing to use it. After changing either credential, verify the integration with a synthetic event.

When decommissioning the workflow, disable the monitoring destination, stop or delete the Localtonet tunnel as appropriate, remove webhook secrets, clear retained payloads according to policy, and revoke agent permissions that are no longer needed.

Do not automate production deployment from an unreviewed webhook

A correctly signed event can contain incomplete telemetry, misleading symptoms, malicious user input, or an error caused by a dependency outside the repository. Keep deployment and other high-impact actions behind explicit policy and human approval.

Troubleshoot delivery and processing failures

The public URL cannot be reached

Confirm that the correct Localtonet client is running and connected. Confirm that the tunnel has been started, because creating it is not sufficient. Check that the selected relay is currently available through the dashboard. If the tunnel was deleted and recreated, verify that the monitoring platform still has the correct public destination.

The tunnel responds, but the receiver does not

Verify the configured local IP address and port against the receiver's actual listener. Test that target locally from the device running the Localtonet client. A common boundary error is binding the receiver to one interface while configuring another address as the tunnel target.

Also confirm that the receiver process is still running and that another process has not taken the intended port. Exact operating-system diagnostic commands are outside this language-neutral workflow, so use the supported process and network inspection tools for your environment.

Every request fails signature verification

Confirm that the receiver verifies the original request bytes rather than reserialized JSON. Check whether the provider signs a timestamp together with the body and whether the expected delimiter or encoding is being applied exactly. Verify that the configured secret belongs to this webhook destination and that it was copied without whitespace changes.

Check local clock accuracy if timestamp freshness is part of the provider's protocol. During secret rotation, confirm which keys the sender and receiver currently use. Do not solve a verification problem by temporarily accepting unsigned production events.

Valid events are being rejected as stale

Compare the device clock with a trusted time source and verify that the timestamp unit and format match the provider's specification. Seconds, milliseconds, and formatted date strings are not interchangeable. Use a narrow but realistic replay window based on documented sender behavior and operational latency.

The monitoring platform sends duplicate events

Inspect the sender's delivery history to see whether your endpoint timed out or returned a response it considered unsuccessful. Make the receiver acknowledge promptly after durable enqueueing. Independently, enforce deduplication using the documented delivery identifier so retries do not launch duplicate agent jobs.

The agent starts multiple investigations for one incident

Distinguish webhook deliveries from grouped incidents. Multiple valid deliveries may refer to one incident, while one delivery identifier should represent one delivery attempt according to the provider's documented model. Use an atomic uniqueness rule at ingestion and a separate incident-level scheduling policy if repeated occurrence updates should be merged.

The agent follows instructions found in logs

Stop processing and review the tool boundary. Ensure payload fields are represented as untrusted data, not appended to system instructions. Remove unnecessary tool permissions, block payload-controlled paths and commands, and require approval for writes or external actions. Prompt wording can help, but enforceable tool restrictions are the primary control.

Large events consume too much memory

Apply a request-size limit before reading the full body. After authentication, limit arrays, strings, stack frames, and log excerpts during normalization. Configure a bounded queue and reject or summarize excessive context according to policy. Do not send complete trace collections to the agent merely because the provider included them.

The receiver accepted an event, but no triage result appears

Follow the event through its stored states. Confirm that enqueueing completed, a worker claimed the job, the service-to-repository mapping exists, the workspace is available, and the permitted tools completed. Keep internal retries bounded and visible. Do not ask the monitoring provider to redeliver an already accepted event unless your deduplication and recovery policy intentionally supports that operation.

Frequently asked questions

Does Localtonet detect or group production errors?

No. Your monitoring platform detects failures, groups related events, and decides when to send a webhook. Localtonet provides the public connectivity path from that webhook sender to your local HTTP receiver.

Do I need inbound router port forwarding or a public IP address?

No. The Localtonet client establishes an outbound connection to a relay and provides a public URL for the configured local target. This workflow does not require inbound router port forwarding, firewall changes, VPN setup, or a public IP address.

Is the public HTTPS URL enough to secure the webhook?

No. HTTPS protects transport to the tunnel edge, but the receiver must still authenticate the sender. Implement the monitoring provider's documented signature verification, freshness checks, schema validation, size limits, deduplication, and authorization rules.

Should the tunnel point directly to the AI agent?

A dedicated receiver is safer. It can authenticate and normalize the event before a separate worker invokes the agent. This prevents public requests from directly reaching general-purpose tool, shell, repository, or administrative operations.

Why must signature verification use the raw request body?

Many webhook protocols sign the exact bytes transmitted. Parsing and reserializing JSON can change those bytes even when the data appears equivalent. Verify the original size-limited body according to the provider's exact specification, then parse it after verification succeeds.

How should duplicate webhook deliveries be handled?

Use the provider's documented delivery identifier and enforce uniqueness atomically before enqueueing work. Track internal job state separately. If the provider does not supply a stable delivery identifier, review its delivery model before creating a fallback because an incident identifier may not uniquely identify a delivery.

Can a correctly signed payload still contain a prompt injection?

Yes. Production logs and error messages can contain attacker-controlled application input. A signature authenticates delivery but does not make the content safe. Treat all payload text as untrusted evidence, minimize it, delimit it from instructions, and enforce agent restrictions outside the prompt.

Does creating a Localtonet tunnel make it immediately available?

No. The tunnel must be started, and the selected client device must be connected. The public endpoint remains available only while that client is connected and the tunnel is running.

Should the AI agent deploy a fix automatically?

Automatic deployment is not recommended merely because an event passed signature verification. The evidence may be incomplete or misleading, and generated changes may have unintended effects. Keep deployment behind explicit policy, test evidence, and human review.

Connect your verified local receiver with Localtonet

Build and test the webhook security boundary first, then use a Localtonet HTTP tunnel to give the receiver a public HTTPS destination without inbound port forwarding. Keep the agent private, minimize production data, and require review before high-impact actions.

Get Started Free β†’

Localtonet is a secure multi-protocol tunneling and proxy platform designed to expose localhost, devices, private services, and AI agents to the public internet supporting HTTP/HTTPS tunnels, TCP/UDP forwarding, mobile proxy infrastructure, file server publishing, latency-optimized game connectivity, and developer-ready AI agent endpoint exposure from a single unified control plane.

support